2016-03-28 35 views
-1

我有一個批處理腳本,它在執行後會生成一個配置文件,生成的配置文件裏面有一些數據。當我從命令提示符如下執行它,我得到所需的輸出:爲什麼如果從python腳本執行批處理文件不工作,或者如果通過雙擊執行批處理文件?

C:/> start.bat 

但如果我嘗試如下,或從python腳本執行即使我雙擊並執行它我得到的配置文件,但它不包含任何所需的數據,它只是有「0」裏面:

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

裏面的批處理腳本(的start.bat)其實我執行python腳本和檢索其數據的配置文件,如下所示:

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

我需要從python腳本執行batch(start.bat)並生成具有所需數據的config.txt文件。那麼,我該怎麼做。 爲什麼start.bat工作不正常,如果我雙擊它,爲什麼它工作正常,如果我從命令提示符執行它。

+0

在蝙蝠末端放置'暫停'並嘗試雙擊。 – WhoAmI

+0

@WhoAmI不,它也不會通過添加暫停也woking。:/ – Learner

+2

無處不在指定完整路徑。這個關於執行環境配置的毫無意義的問題一遍又一遍地提出。明確指出你想要發生的事情。 '%userprofile%\ desktop'通常是用戶的桌面。 – 2016-03-28 07:22:56

回答

1

是否有可能得到'0',因爲它是%errorlevel%的值?

,我發現你的情況兩個問題:

1)批處理文件 - 你可以請更新您的批處理文件是這樣的:

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

信用設置變量的想法:https://stackoverflow.com/a/2340018/5088142

2)python腳本 - 請你更新你的python腳本:

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

學習者 - 現在工作嗎? – Yaron