tarmerlan
Goto Top

Pfad aus Variablen zusammensetzen

Guten Tag,

ich vermute mein Problem ist recht einfach und wird bei vielen für ein Schmunzeln sorgen, aber ich hänge nun mal leider fest: Folgender Sachverhalt ... Aus einer Batch sollen per call andere Batchs aufgerufen werden. In der Masterbatch habe ich einige Variablen definiert. Die sollen möglichst auch alle hier definiert werden, damit die Anpassung einfach wird.
Bei den call-Aufrufen gebe ich dann diese Variablen einfach mit und rufe sie per %1 usw. in der Unterbatch wieder auf. Teilweise klappt das auch. Ich habe aber ein Problem: Die Unterbatch soll kopieren und dieser Job funktioniert nicht. Ich zeig mal was ich meine:

Inhalt der Masterbatch

set pfad="c:\temp\"
set vm="C:\Temp\test\"
call 22.bat %pfad% %vm%

Der Inhalt der Unterbatch 22.bat:
md %1\backup
copy %2 %1\backup

Der erste Teil - die Verzeichniserstellung - funktioniert. Der zweite Teil leider nicht. Das wäre dann mein Problem. Ich hoffe ich habe es anschaulich dargestellt...

Grüße Erik

Content-ID: 109157

Url: https://administrator.de/contentid/109157

Ausgedruckt am: 23.11.2024 um 07:11 Uhr

Paddyville
Paddyville 16.02.2009 um 23:23:04 Uhr
Goto Top
Also ich bin zwar batch noob und das ist keine gute Lösung aber es sollte klappen.

main.bat
set PFAD1="c:\temp\"  
set PFAD2="C:\Temp\test\"  
echo %PFAD1%>>pfad1.txt 
echo %PFAD2%>>pfad2.txt 
call 22.bat %PFAD1% %PFAD2%
del pfad1.txt
del pfad2.txt

22.bat
FOR /F %%i in (pfad1.txt) do set PFAD1=%%i
FOR /F %%k in (pfad2.txt) do set PFAD2=%%k
md %PFAD1%\backup
copy %PFAD2$ %PFAD1%\backup
Tarmerlan
Tarmerlan 17.02.2009 um 00:13:04 Uhr
Goto Top
Erst mal danke für die Antwort. Leider verstehe ich da Ganze nicht so richtig.
Das fängt schon mit Zeile 03 und 04 an. Dort wird "Text" in Textdateien geschrieben. Ich sehe schon, dass dies eigentlich Variablen sind, aber wenn ich in die Textdatei reinschaue, dann sehe ich nur eine Meldung, dass Echo eingeschaltet ist.
Dann erfolgt der Call-Aufruf, wobei die alten Variablen als Parameter übergeben werden.

Ich interpretiere die Freizeilen mal so, dass unten der Inhalt der 22.bat steht. Dort wird eine Schleife aufgerufen, mir ist aber nicht so klar was hier passiert.

Auch hat die Verwendung der Dateien nicht das gewünschte Ergebnis gebracht... face-sad
Paddyville
Paddyville 18.02.2009 um 23:27:00 Uhr
Goto Top
Hi,

sorry ich habe das gerade mal korrigiert.

dürfte klar sein....
set PFAD1="c:\temp\"
set PFAD2="C:\Temp\test\"

Pfade in Textdatei schreiben...
echo %PFAD1%>>pfad1.txt
echo %PFAD2%>>pfad2.txt

dann call 22.bat

Pfad aus den textdateien holen und variable PFAD1 und PFAD2 setzen ...
FOR /F %%i in (pfad1.txt) do set PFAD1=%%i
FOR /F %%k in (pfad2.txt) do set PFAD2=%%k

also bei mir läuft das so ...

Gruß aus Hamburg
Tarmerlan
Tarmerlan 19.02.2009 um 10:50:31 Uhr
Goto Top
Ja - jetzt hat es auch bei mir funktioniert. Diese Lösung kann ich jetzt verwenden. Ich bedanke mich für die nette Hilfe.

Grüße aus Berlin
Paddyville
Paddyville 19.02.2009 um 18:41:43 Uhr
Goto Top
Es ist zwar nicht die schönste Lösung aber wenn es funktioniert face-smile
Tarmerlan
Tarmerlan 19.02.2009 um 19:33:09 Uhr
Goto Top
Ich habe das Ganze jetzt mal eingebaut und da sind noch 2 neue Fragen aufgetaucht:
1. In den Textdateien, wird ja ein Pfad gespeichert. Einmal enthält dieser Pfad ein Freizeichen. Das Ganze steht natürlich vorbildlich in Hochkomme, aber leider wird die Variable dann einfach abgekürzt erstellt. Sprich nur bis zum Freizeichen. Dann fehlt natürlich ein Teil des Pfades. Das hat sicher mit der Syntax zu tun... oder?
2. ich wollte mehr als 2 Variablen auf diesem Weg übergeben und habe einfach noch weitere kleine Buchstaben verwendet (gleiches Schema wie das %%i und das %%k) > das hat dann leider nicht funktioniert.
Auch beim Lesen von for /? bin ich nicht so recht schlau geworden. Bin halt nicht so der Programmierer.
Problem Nummer 1 habe ich damit umgangen, dass ich den Pfad geändert habe... ist aber auch wieder nur halbherzig. Für Problem Nummer 2 habe ich keine Lösung.

Übrigens: Du hast geschrieben, dass diese Lösung nicht "schön" ist. Wie kriegt man denn eleganter Variablen aus der "Mutterbatch" in die per call aufgerufenen Batchs? Wäre echt dankbar für ein paar Tipps um meine Lösung eleganter zu gestalten, bzw. einfacher anpassbar zu machen.

Grüße Erik