Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[BATCH] String met spaties

Pagina: 1
Acties:

  • Pingelmonster
  • Registratie: Juli 2005
  • Niet online
Hallo mede-Tweakers,

Momenteel zit ik wat te scripten in batch/dos.
De bedoeling is om een aantal netwerkmappings op te zetten (dus bijv. i: naar \\<server>\mapje).

In het onderstaand stukje code heb ik een variabele %unitnaam%. Hier wordt een unitnaam aan gekoppeld.
Vervolgens moet er een directory aangemaakt worden op de server met de naam "Unit <unitnaam>".
Het gaat echter fout in de "md"-regel, om precies te zijn bij de spatie tussen unit en %unit%.
Alles achter de spatie wordt afgekapt waardoor er een mapje met de naam "unit" aangemaakt wordt.

code:
1
2
3
...
set unitnaam=test (let op spatie)
md \\<servernaam>\unit %unitnaam%



Is er een mogelijkheid om een waarde mét spaties aan een variabele te hangen (bijv: set unitnaam=Unit Test)?

Verwijderd

Je hebt in je topicstart 6 keer gebruik gemaakt van dubbele quotes (").
Misschien zou je daar iets mee kunnen doen.

En serieus, dit kun je in minder dan een minuut wel uitzoeken met Google.

  • BramFokke
  • Registratie: Augustus 2007
  • Laatst online: 04-10-2024
Pingelmonster schreef op maandag 08 september 2008 @ 20:40:Is er een mogelijkheid om een waarde mét spaties aan een variabele te hangen (bijv: set unitnaam=Unit Test)?
Heb je geprobeerd om de boel te escapen met double quotes? (")

  • GentleGiant
  • Registratie: Januari 2001
  • Laatst online: 16-11 07:25
Gebruik quotes!
code:
1
2
set untinaam="test (let op de spatie)"
md \\server\unit\%unitnaam%

[ Voor 4% gewijzigd door GentleGiant op 08-09-2008 20:47 ]


  • Pingelmonster
  • Registratie: Juli 2005
  • Niet online
Verwijderd schreef op maandag 08 september 2008 @ 20:45:
Je hebt in je topicstart 6 keer gebruik gemaakt van dubbele quotes (").
Misschien zou je daar iets mee kunnen doen.

En serieus, dit kun je in minder dan een minuut wel uitzoeken met Google.
Kijk, zo'n reactie is dus waardeloos. Ik begrijp ook wel dat het niet de bedoeling is om van dit soort simpele dingen te plaatsen als er genoeg over te vinden is.
Echter halen bij mij de quote-oplossingen niks uit. Vandaar dat ik hier om raad vraag.

Met deze code:
code:
1
2
set unitnaam="unit test"
md \\server\unit\%unitnaam%


Gebeurt er niks. Er wordt een "the syntax or command is incorrect" aangegeven.

[ Voor 7% gewijzigd door Pingelmonster op 08-09-2008 20:53 ]


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Zoiets:
code:
1
2
3
...
set unitnaam=test (let op spatie)
md "\\<servernaam>\unit %unitnaam%"


Maar je kan naar mijn idee beter werken met quotjes om je unitnaam zodra er spaties in zitten en deze verwijderen waar ze niet nodig zijn. Dit voorkomt fouten bij andere commando's en toekomstige uitbreidingen.

Bijvoorbeeld:
code:
1
2
3
...
set unitnaam="test (let op spatie)"
md "\\<servernaam>\unit %unitnaam:"=%"

  • TRON
  • Registratie: September 2001
  • Laatst online: 27-11 12:50
Pingelmonster, Cheatah heeft wel degelijk gelijk ;)

Zet je quotes eens in de tweede regel neer:
code:
1
2
set unitnaam=mijn unit
md "\\server\unit\%unitnaam%"



edit:
Eerder refreshen...

[ Voor 16% gewijzigd door TRON op 08-09-2008 21:18 ]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Pingelmonster
  • Registratie: Juli 2005
  • Niet online
Ok, ik ben een stap verder gekomen.
Het lijkt erop dat de opdracht "if not exists ....." invloed heeft op het MakeDir-commando.
Wanneer ik die check eruit haal werkt het scriptje wel.

code:
1
2
3
4
...
set unitnaam="Unit Test"
if not exist \\<server>\mapje\%unitnaam%
  md \\<server>mapje\%unitnaam%


Nu even de oplossing van [ash] proberen.
EDIT: de oplossing van [ash] werkt helaas niet. Wederom; wanneer ik de "if not exist"-regel uit het script haal werkt het perfect...

[ Voor 21% gewijzigd door Pingelmonster op 08-09-2008 21:05 ]


  • Kentsfield
  • Registratie: November 2007
  • Laatst online: 11-01-2023
code:
1
md \\server\share\"unit "%bla%


zou moeten werken

Dingen!


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Wel de quotjes weg halen waar ze niet nodig zijn.
code:
1
2
set unitnaam="Unit Test"
if not exist "\\<server>\mapje\%unitnaam:"=%" md "\\<server>mapje\%unitnaam:"=%"


Zet anders echo voor de regels dan zie je wat de output is en wat er mis gaat.

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Pingelmonster schreef op maandag 08 september 2008 @ 20:52:
Kijk, zo'n reactie is dus waardeloos.
offtopic:
Hij was ietwat cryptisch en licht sarcastisch, maar desondanks wel een goede hint waar je je probleem moet zoeken anders ;)
Soms kun je je antwoord ook niet-letterlijk krijgen maar moet je tussen de regels door lezen.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Pingelmonster
  • Registratie: Juli 2005
  • Niet online
alt-92 schreef op maandag 08 september 2008 @ 21:54:
[...]

offtopic:
Hij was ietwat cryptisch en licht sarcastisch, maar desondanks wel een goede hint waar je je probleem moet zoeken anders ;)
Soms kun je je antwoord ook niet-letterlijk krijgen maar moet je tussen de regels door lezen.
Dat je jezelf als mede-tweaker nogal eens kunt storen aan mensen die niet zoeken voordat ze een topic openen kan ik begrijpen.
Echter stoor ik me soms meer aan de toon waarmee mede-tweakers duidelijk willen maken dat ze hier niet van gediend zijn. Het betreft vaak ook nog "gewone" gebruikers zonder moderator-rechten of wat dan ook die gaan lopen eikelen.
Het zou mooi zijn als men hiervoor eens een regeltje op wilde stellen!

En nogmaals, als ik mijn antwoord met Google had gevonden had ik hier geen topic geopend. Echter waren veel zoekresultaten zo specifiek dat ik er geen wijs uit werd.
Vandaar dat ik (en terecht naar mijn mening) hier een topic voor heb geopend.

Inmiddels heb ik de oplossing gevonden na de reactie van [ash] hierboven. Bedankt!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Pingelmonster schreef op maandag 08 september 2008 @ 23:09:

Dat je jezelf als mede-tweaker nogal eens kunt storen aan mensen die niet zoeken voordat ze een topic openen kan ik begrijpen.
Echter stoor ik me soms meer aan de toon waarmee mede-tweakers duidelijk willen maken dat ze hier niet van gediend zijn. Het betreft vaak ook nog "gewone" gebruikers zonder moderator-rechten of wat dan ook die gaan lopen eikelen.
Dat heet sociale controle. Het zou het mooist zijn als die moderators helemaal niet nodig zouden zijn. Als jij, in plaats van te denken dat je alleen maar naar de moderators hoeft te luisteren, je eens bedenkt dat een community wordt gemaakt door gebruikers, kun je vast een stuk beter begrijpen dat er mensen zo reageren als jij niet de moeite neemt in je topicstart alvast te melden wat je gevonden had, en waarom dat niet werkte. Dat deed je niet, dus vanuit het perspectief van andere forumgebruikers heb je niet gezocht.
Het zou mooi zijn als men hiervoor eens een regeltje op wilde stellen!
Om wie tegen wat te beschermen? Of om wat tegen wie te beschermen? ;)
En nogmaals, als ik mijn antwoord met Google had gevonden had ik hier geen topic geopend. Echter waren veel zoekresultaten zo specifiek dat ik er geen wijs uit werd.
Dit is -vanuit het perspectief van andere gebruikers- onzin. Iedereen kan dit beweren, niemand kan dit aantonen. En dan nog, moeten andere mensen even voor je googlen en dezelfde suggesties aandragen als je zelf al zegt te hebben gevonden, en waaraan je niets had? Dat schiet dan ook niet op. Je helpt jezelf en de community als je een topic op een goede manier begint.
Inmiddels heb ik de oplossing gevonden na de reactie van [ash] hierboven. Bedankt!
Graag gedaan :*
Pagina: 1