❶ 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
$