python攻击脚本执行命令_python – 为什么我的脚本在调用.EXE后停止执行命令?...

以下是Python脚本中的相关代码,其中执行一些命令来复制可执行文件然后执行它:

exe_file_path = os.getcwd() + r'\name_of_executable.exe'

temp_loc = os.environ['temp']

subprocess.Popen(r'copy %s %s' % (exe_file_path, temp_loc), shell=True)

exe_file_path = os.environ['temp'] + r'\name_of_executable.exe'

subprocess.Popen(r'start %s' % (exe_file_path), shell=True)

subprocess.Popen(r'del %s' % (exe_file_path), shell=True)

目前,name_of_executable.exe只打印出文本,然后调用system(“pause”).

暂停执行后,我按Enter键,我会假设可执行文件将关闭,Python脚本将继续,但Python的最后一行不会执行.

这是因为我正在使用TEMP文件夹吗? (我正在以管理员身份运行的命令提示符执行.如何让脚本运行?

解决方法:

所有程序将一个接一个地立即启动.在每个Popen对象上调用communicate以等待程序终止.

此外,您使用格式字符串是不必要的危险. [‘copy’,exe_file_path,temp_loc]自动转义exe_file_path和temp_loc中的任何奇怪字符(并且更容易阅读).

顺便说一句,Python在shutil和os中具有非常好的复制和删除文件的功能;没有必要为此调用shell程序.

而不是连接字符串来确定exe_file_path,你应该使用os.path.join(虽然这不重要,因为你的程序似乎锁定到Windows).

标签:python,executable

来源: https://codeday.me/bug/20190531/1187374.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值