2016-03-28 14 views
-1

Ich habe ein Batch-Skript, das eine Konfigurationsdatei nach seiner Ausführung erzeugt, die Konfigurationsdatei hat einige Daten darin. Wenn ich es von Eingabeaufforderung wie folgt ausführen bekomme ich die gewünschte Ausgabe:Warum Batch-Datei nicht funktioniert, wenn aus Python-Skript oder wenn durch Doppelklick ausgeführt wird?

C:/> start.bat 

aber wenn ich versuche, aus Python-Skript ausführen wie folgt oder, selbst wenn ich es einem Doppelklick auf und führe ich die Konfigurationsdatei zu tun bekommen, aber es keine erforderlichen Daten enthalten sie nur im Inneren ‚0‘ haben:

import subprocess as sp 
p= sp.Popen("C:/pathtobatch/start.bat",stdin=sp.PIPE, stdout = sp.PIPE, stderr=sp.PIPE) 

im Inneren des Batch-Skript (start.bat) i bin eigentlich ein python-Skript ausgeführt wird und seine Daten in einer Konfigurationsdatei abrufen wie folgt:

python C:\inetpub\ftproot\sample.py > log.txt 
set myvar =< log.txt 
del log.txt 
echo %errorlevel% %myvar% >C:\inetpub\ftproot\config.txt 

Ich muss den Stapel (start.bat) aus dem Python-Skript ausführen und die Datei config.txt mit den erforderlichen Daten generieren. Also, wie soll ich das machen? Warum die start.bat funktioniert nicht gut, wenn ich es doppelklicke und warum funktioniert es gut, wenn ich es von der Eingabeaufforderung aus ausführen.

+0

put 'pause' am Ende der Fledermaus und versuchen Sie ein Doppelklick. – WhoAmI

+0

@WhoAmI nein es woking nicht durch Hinzufügen von Pause auch.: – Learner

+2

Geben Sie vollständige Pfade, überall. Diese sinnlose Frage, die sich auf die Konfiguration der Ausführungsumgebung bezieht, wird immer wieder gestellt. Geben Sie genau an, was Sie möchten. '% userprofile% \ desktop' ist normalerweise der Desktop des Benutzers. –

Antwort

1

Ist es möglich, dass Sie "0" erhalten, da es der Wert von% errorlevel% ist?

fand ich zwei Fragen in Ihrem Fall:

1) Batch-Datei - können Sie bitte Ihre Batch-Datei so etwas wie aktualisieren:

for /f %%i in ('python C:\inetpub\ftproot\sample.py') do set myvar=%%i 
echo %errorlevel% %myvar% >C:\inetpub\ftproot\config.txt 

Kredit für die Idee der Stellgröße: https://stackoverflow.com/a/2340018/5088142

2) Skript python - können Sie bitte Ihren python-Skript aktualisieren, um zu sein:

import os 
os.system("C:/pathtobatch/start.bat") 
+0

Lerner - Funktioniert es jetzt? – Yaron

Verwandte Themen