Variablenproblem in Batch

25/08/2012 - 16:40 von Anselm Rapp | Report spam
Hallo,

wer hilft mir bitte? Ich habe eine Batchdatei, in welcher ich eine
Variable an Robocopy übergeben will:

1 set RoboLogVz="C:\Users\Anselm\Konfigurationen + Logs\Robocopy\"
2 echo %RoboLogVz%
3 robocopy C:\temp D:\MISTKUEBEL *.* /E /R:1 /W:10 /MOVE /MINAGE:30
/LOG+:%RoboLogVz%robocopy.log /NP

echo gibt (inklusive Anführungszeichen) aus:

"C:\Users\Anselm\Konfigurationen + Logs\Robocopy\"

Robocopy meldet:

FEHLER: Ungültiger Parameter #9 : "/LOG+:C:\Users\Anselm\Konfigurationen
+ Logs\Robocopy"robocopy.log /NP"

Der Backslash vor dem zweiten Anführungszeichen kommt also nicht an und
im Verzeichnis C:\Users\Anselm\Konfigurationen + Logs wird eine Datei
Robocopyrobocopy.log erzeugt.

In meinen grauen Zellen taucht das Stichwort "Maskieren" auf, aber das
war's dann. Googeln hat mich nicht weitergebracht.

Das Verzeichnis "Konfigurationen + Logs" möchte ich nur ungern ohne
Leerzeichen umbenennen, weil da schon etliche Programme darauf zugreifen
und ich alles umkonfigurieren müsste.

Danke für Tipps,

Anselm

Bitte in der Newsgroup antworten.
 

Lesen sie die antworten

#1 Stefan Kanthak
25/08/2012 - 17:17 | Warnen spam
"Anselm Rapp" schrieb:

Hallo,

wer hilft mir bitte? Ich habe eine Batchdatei, in welcher ich eine
Variable an Robocopy übergeben will:



Irrtum.
Die Variablen werden vom Kommandoprozessor ausgewertet.

1 set RoboLogVz="C:\Users\Anselm\Konfigurationen + Logs\Robocopy\"



GANZ schlechte Idee!
Je nach der zur Interpretation der Kommandozeilen-Argumente verwendeten
Systemschnittstelle oder Laufzeit-Bibliothek werden \ oder \" verschieden
interpretiert!
Ausserdem ist CMD.EXE keine UNIX-Shell, sprich: " (und einige weitere
Meta-Zeichen) werden nicht immer bei der Uebergabe der Argumente an das
Kommando entfernt.

Set RoboLogVz=%USERPROFILE%\Konfigurationen + Logs\Robocopy

2 echo %RoboLogVz%
3 robocopy C:\temp D:\MISTKUEBEL *.* /E /R:1 /W:10 /MOVE /MINAGE:30
/LOG+:%RoboLogVz%robocopy.log /NP



/LOG+:"%RoboLogVz%obocopy.log" /NP

ABER: wieso schreibst Du nicht "C:\temp" und "D:\MISTKUEBEL" (denn "
um Pfadnamen schaden nie), und wieso kodierst Du beide Pfade fest ein?

ICH wuerde

/LOG+:"%USERPROFILE%\...+...\RoboCopy\RoboCopy.log" schreiben und
auf die Variable RoboLogVz ganz verzichten!

[...]

Stefan
[
Die unaufgeforderte Zusendung werbender E-Mails verstoesst gegen §823
Abs. 1 sowie §1004 Abs. 1 BGB und begruendet Anspruch auf Unterlassung.
Beschluss des OLG Bamberg vom 12.05.2005 (AZ: 1 U 143/04)

Ähnliche fragen