Hallo Allerseits
Ich programmiere zum ersten mal ein Batch-file und stehe vor einem Problem, welches ich auch nach Stunden noch nicht lösen konnte. (Ich bin kein Informatiker sondern lediglich Maschinenbauer, also vergebt mir meine Unbeholfenheit...)
Ich möchte ein Batch file programmieren, welches unter anderem ein txt-file einliest (readlist.bat). Dieses Batch-File möchte ich dann in einem anderen Batch-file mit "call" aufrufen können (hier: callreadlist.bat).
Was mir jetzt schon klar ist: Ich muss die Variablen im readlist.bat nicht lokal definieren, damit sie dem callreadlist.bat übergeben werden. Nur kriege ich das nicht hin...
Hier sind die files (die Dateiendungen müssen für die Batch-files noch angepasst werden):
Anhang anzeigen text.txt
Anhang anzeigen callreadlist.txt
Anhang anzeigen readlist.txt
Das Text.txt enthält lediglich "Test-Variablen".
Das readlist.bat sollte alle Zeilen spaltenweise einlesen (das klappt auch). Nur müssen die Variablen am Ende noch "nicht-lokal" gesetzt werden. Dafür habe ich mal probehalber folgende Zeilen eingefügt:
endlocal
set "job1fld=%job1fld%"
set "job1dat=%job1dat%"
set "job1kyw=%job1kyw%"
set "job2fld=%job2fld%"
set "job2dat=%job2dat%"
set "job2kyw=%job2kyw%"
set "job3fld=%job3fld%"
set "job3dat=%job3dat%"
set "job3kyw=%job3kyw%"
set vartest1=test1
set vartest2=test2
set vartest3=test3
set vartest4=test4
set vartest5=test5
set vartest5=test6
set vartest6=test7
Dieser Block:
set vartest1=test1
set vartest2=test2
set vartest3=test3
set vartest4=test4
set vartest5=test5
set vartest5=test6
set vartest6=test7
scheint zu funktionieren. Sprich: Diese Variablen werden dem callreadlist.bat übergeben. Nur sind das ja lediglich manuell gesetzte Testvariablen
Dieser Block:
endlocal
set "job1fld=%job1fld%"
set "job1dat=%job1dat%"
set "job1kyw=%job1kyw%"
set "job2fld=%job2fld%"
set "job2dat=%job2dat%"
set "job2kyw=%job2kyw%"
set "job3fld=%job3fld%"
set "job3dat=%job3dat%"
set "job3kyw=%job3kyw%"
sollte einige der eingelsenenen Variablen einfach nach dem "endlocal" erneut setzen damit diese auch erhalten bleiben wenn "readlist.bat" durchgelaufen ist. Nur klappt das nicht...
Wenn ich in diesen for-Schleifen vor dem "set" ein "endlocal eifüge:
endlocal
set job!cntr1!fld=%%A
setlocal enabledelayedexpansion
Dann wird "!cntr1!" auf einmal nicht mehr als Nummer interpretiert sondern als Test... Und folglich wird die Variable immer überschrieben...
Wie bringe ich es fertig, dass die eingelesenen Variablen mit übergeben werden? (Da ich ein absolutes Greenhorn bin was Batch-files angeht, wäre ich dankbar, wenn ihr mir nicht nur Tipps gebt, sondern Codes
)
Vielen Dank im Voraus!
Ich programmiere zum ersten mal ein Batch-file und stehe vor einem Problem, welches ich auch nach Stunden noch nicht lösen konnte. (Ich bin kein Informatiker sondern lediglich Maschinenbauer, also vergebt mir meine Unbeholfenheit...)
Ich möchte ein Batch file programmieren, welches unter anderem ein txt-file einliest (readlist.bat). Dieses Batch-File möchte ich dann in einem anderen Batch-file mit "call" aufrufen können (hier: callreadlist.bat).
Was mir jetzt schon klar ist: Ich muss die Variablen im readlist.bat nicht lokal definieren, damit sie dem callreadlist.bat übergeben werden. Nur kriege ich das nicht hin...
Hier sind die files (die Dateiendungen müssen für die Batch-files noch angepasst werden):
Anhang anzeigen text.txt
Anhang anzeigen callreadlist.txt
Anhang anzeigen readlist.txt
Das Text.txt enthält lediglich "Test-Variablen".
Das readlist.bat sollte alle Zeilen spaltenweise einlesen (das klappt auch). Nur müssen die Variablen am Ende noch "nicht-lokal" gesetzt werden. Dafür habe ich mal probehalber folgende Zeilen eingefügt:
endlocal
set "job1fld=%job1fld%"
set "job1dat=%job1dat%"
set "job1kyw=%job1kyw%"
set "job2fld=%job2fld%"
set "job2dat=%job2dat%"
set "job2kyw=%job2kyw%"
set "job3fld=%job3fld%"
set "job3dat=%job3dat%"
set "job3kyw=%job3kyw%"
set vartest1=test1
set vartest2=test2
set vartest3=test3
set vartest4=test4
set vartest5=test5
set vartest5=test6
set vartest6=test7
Dieser Block:
set vartest1=test1
set vartest2=test2
set vartest3=test3
set vartest4=test4
set vartest5=test5
set vartest5=test6
set vartest6=test7
scheint zu funktionieren. Sprich: Diese Variablen werden dem callreadlist.bat übergeben. Nur sind das ja lediglich manuell gesetzte Testvariablen
Dieser Block:
endlocal
set "job1fld=%job1fld%"
set "job1dat=%job1dat%"
set "job1kyw=%job1kyw%"
set "job2fld=%job2fld%"
set "job2dat=%job2dat%"
set "job2kyw=%job2kyw%"
set "job3fld=%job3fld%"
set "job3dat=%job3dat%"
set "job3kyw=%job3kyw%"
sollte einige der eingelsenenen Variablen einfach nach dem "endlocal" erneut setzen damit diese auch erhalten bleiben wenn "readlist.bat" durchgelaufen ist. Nur klappt das nicht...
Wenn ich in diesen for-Schleifen vor dem "set" ein "endlocal eifüge:
endlocal
set job!cntr1!fld=%%A
setlocal enabledelayedexpansion
Dann wird "!cntr1!" auf einmal nicht mehr als Nummer interpretiert sondern als Test... Und folglich wird die Variable immer überschrieben...
Wie bringe ich es fertig, dass die eingelesenen Variablen mit übergeben werden? (Da ich ein absolutes Greenhorn bin was Batch-files angeht, wäre ich dankbar, wenn ihr mir nicht nur Tipps gebt, sondern Codes
![Zwinkern ;) ;)](/forum/styles/smilies/wink.gif)
Vielen Dank im Voraus!
Zuletzt bearbeitet: