ich möchte (unter Windows) aus einem Perl Script eine Batchdatei aufrufen, die auf Umgebungsvariablen angewiesen ist.
Bei der Ausführung startet das Script die Batchdatei korrekt, allerdings bleibt die Ausführung der Batchdatei hängen, weil die Umgebungsvariablen nicht an den Prozess vererbt werden.
Beispiel Perlscript:
my $BatchCall = "C:\\Windows\\System32\\cmd.exe C:\\Temp\\ENV\\set.bat";
qx { $BatchCall };
Beispiel Batchdatei:
set > C:\Temp\output.txt
Kann mir vielleicht jemand verraten, wie ich die Variablen aus %ENV an die Batchdatei übergeben kann, ohne die Variablen in der Batchdatei setzen zu müssen?
Hoffnungsvoll
André
+4 replies
rosti
2011-06-22 12:26
User since 2011-03-19
3712
Artikel BenutzerIn
Du meinst Übergeben statt Vererben? Batches haben die Argumente in %1, %2 usw.
STDIN, STDOUT und Pipes sind weitere Möglichkeiten, Prozesse untereinander kommunizieren zu lassen.
WallPaper -- jeden Monat neu. Mit nur 2 Klicks den Aktuellen Monat auf dem Desktop.
HeiniHuber
2011-06-23 14:37
User since 2006-11-28
4
Artikel BenutzerIn
Hallo Rosti,
ich schreibe einen Wrapper mit Perl, der unterschiedliche Batchdateien und Prozesse abarbeiten soll und ich hatte gehofft, dass ich nicht jede Batchdatei (in dessen CMD die ENV Variablen zur Verfügung stehen sollen) noch editiert werden muss, damit die Variablen auch jedes mal gesetzt werden.
Ich habe Deinen Tip zum Anlass genommen und generiere mir nun neue Batchdateien, anfangs mit den Aufrufen um die Variablen zu setzen und im Anschluss den Inhalt der ursprünglichen Batchdatei.