Ich arbeite an der Konvertierung eines älteren Systems von Batch-Dateien in Python. Ich habe eine Batch-Datei gefunden, die die Umgebungsvariablen für die Batch-Datei festlegt, die sie aufgerufen hat. Diese Werte werden dann in zukünftigen Aufrufen von Batchdateien erneut verwendet. Meine Umgebungsvariablen scheinen in den Fluss der Anrufe zu gehen, aber ich kann sie nicht wieder hochbringen. Ich habe hier zwei verschiedene Threads gelesen, die über etwas ähnliches sprechen, aber es ist nicht genau dasselbe. Ist es möglich, diese Umgebungsvariablen aus dem Subprozess abzurufen?Abrufen von Umgebungsvariablen aus Popen
Python subprocess/Popen with a modified environment
Set Environmental Variables in Python with Popen
Was ich tue jetzt:
p = Popen(process_, cwd=wd, stdout=PIPE, shell=True,
universal_newlines=True, stderr=STDOUT, env=env)
Die alte Fluss von bat-Dateien:
foo.bat calls foo-setparam.bat
foo-setparam.bat sets some variables
foo.bat uses these variables
foo.bat calls bar.bat
bar.bat uses variables set by both foo.bat and foo-setparam.bat
Update: Ich habe versucht, Hinzufügen von „Call "vor meinem popen parameter r. Ich habe das gleiche Verhalten.
Ich bin mir nicht sicher, was Sie mit _einer Batch-Datei meinen, die die Umgebungsvariablen für die Batch-Datei definiert, die it_ aufgerufen hat. Es ist nicht möglich, dass ein Unterprozess die Umgebung des aufrufenden Prozesses ändert. Im besten Fall könnte eine Batch-Datei eine Ausgabe an den Aufrufer zurückgeben, die der Aufrufer untersuchen und dann entscheiden könnte, seine eigene Umgebung zu ändern. –
Von meinem Verständnis in einer .bat-Datei der Aufruf Befehl führt die gezielte .bat-Datei in der gleichen Umgebung. – Nickolouse
Jede Batch-Datei, die über 'call subprog.bat' aufgerufen wird und die _NOT_ einen' setlocal'-Befehl enthält, kann die Umgebung der aufrufenden Batch-Datei ändern ... – Aacini