❶ bat 打開cmd 執行python文件
python編碼啟動cmd批處理文件(.bat文件),用subprocess方法可以將相應的cmd輸出獲取到,代碼如下:
#import os
#os.system("c:\\sam.bat")
import subprocess
cmd = 'cmd.exe c:\\sam.bat'
p = subprocess.popen("cmd.exe /c" + "c:\\sam.bat abc", stdout=subprocess.pipe, stderr=subprocess.stdout)
curline = p.stdout.readline()
while(curline != b''):
print(curline)
curline = p.stdout.readline()
p.wait()
print(p.returncode)sam.bat批處理文件代碼:
echo hello world!
echo show %1%
❷ python怎麼執行bat文件並傳遞參數給bat文件
使用os模塊的system方法可以執行命令,例如執行D盤的cmd.bat批處理腳本並傳入參數p1:
importos
os.system(r'D:cmd.batp1')
❸ 如何通過Python或批處理指令刪除指定文件夾
不清楚你的實際文件/情況,僅以問題中的樣例說明及猜測為據;以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的文件放一起雙擊運行
@echooff&cd/d"%~dp0"&modeconlines=5000
rem根據一個txt文本文件里列出的路徑,將指定文件或文件夾刪除
set#=Anyquestion&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"txtfile=xxx.txt"
ifnotexist"%txtfile%"(echo;"%txtfile%"notfound&pause&exit)
for/f"delims="%%ain('type"%txtfile%"')do(
set"isexist="
echo;"%%~a"
ifexist"%%~a"(
set"isexist=1"&rd/s/q"%%~a"
)
ifexist"%%~a"(
set"isexist=1"&del/a/f/q"%%~a"
)
ifnotdefinedisexist(echo;notfound)
)
echo;%#%+%$%%$%/%_%%z%
pause
exit
❹ python使用subprocess.Popen運行bat腳本時報不支持輸入重新定向錯誤分析
大圖請右擊在新標簽頁打開
Popen默認shell參數為False:
為True時默認使用 COMSPEC 環境變數指定的程序為shell:
在Windows上默認為cmd:
args參數為命令字元串時,因為dir是cmd的內建命令,需要指定shell=True:
例如:
而timeout,ping等都是獨立的exe,可以不需要cmd:
args參數是文件路徑形式時:
底層是調用了Windows的API,如下:
調試:
測試:
從調試結果以及測試來看,對於bat文件,可以不寫lpApplicationName參數,Windows會自動使用cmd來運行(使用vbs文件測試返回錯誤:不是正確的win32程序,要指定lpApplicationName為cscript.exe才行,可能只有bat才有這個特權了)。
輸入重定向的問題:
Popen是用創建子進程的方式來執行的,而timeout.exe在暫停時,可接受用戶按鍵來終止,這個時候會需要輸入,但是Popen給子進程的stdin只有
並不能讓timeout重定向到用戶輸入上,所以出錯。
解決的方法有很多,最簡單的替換掉timeout語句為ping -w xxx 127.0.0.1 或者直接由python來接管timeout。
❺ 如何用python運行bat文件
我沒有測試它的窗口盒。
這是我在Mac操作系統上的嘗試
Dinh-Phams-MacBook-Pro:tmp dinhpham$ cat > t.bat
print "abc"
Dinh-Phams-MacBook-Pro:tmp dinhpham$
Dinh-Phams-MacBook-Pro:tmp dinhpham$ python t.bat
abc
Python解釋器不關心.py擴展
如果要將.bat文件載入為Python模塊,只需使用
imp.load_source(path_to_file)
❻ 如何使用批處理執行python腳本,並把python腳本的控制台日誌輸出到一個log文件中
1, 用絕對路徑試試:D:\logs\log.txt;
2, 最後的exit去掉試試,反正最後一行執行完也會自然退出。
3, 另寫一個簡單的python測試腳本,裡面只有一行 print 'Hello World', 然後用上述批處理執行一下看看log對不對。
❼ 批處理中運行python程序 並傳入n個參數,怎麼寫。
python 包含一個"argparse"的模塊,提供了異常強大的參數解析功能。下面是一個簡單的例子
#!/usr/bin/envpython
#coding:utf-8
#
importsys
importargparse
if__name__=="__main__":
parser=argparse.ArgumentParser(
description='')
parser.add_argument(
'integers',metavar='int',nargs='+',type=int,
help='anintegertobesummed')
parser.add_argument(
'--log',default=sys.stdout,type=argparse.FileType('w'),
help='')
args=parser.parse_args()
args.log.write('%s '%sum(args.integers))
args.log.close()
$ ./test2.py 1 2 3 4 5 6 7
28
$ ./test2.py 633 132
765
$