Python .Bat To.Py重写
我正试图将这个小的.bat脚本重写成一个.py文件,主要是为了练习,但是我很难让整个shutil模块对我有利,似乎有很多方法可以使用copy、delete和dircreate 但我的主要希望是有人能将这些基本命令转换成一个工作脚本,这样我在处理其他脚本时就有了一些东西,希望最终我能通过使用开始理解 任何帮助都太好了!:) 发行日期: 嘿,请尝试重新发布,但如果我仅从脚本中取出启动命令并将其放入如下新脚本中,则脚本在脚本末尾无法同时启动应用程序。它将启动第一个应用程序,并在第一个应用程序关闭后启动以下应用程序 此外,它似乎设置为一个接一个地启动应用程序,导致它们无法同时运行Python .Bat To.Py重写,python,python-2.7,batch-file,copy,Python,Python 2.7,Batch File,Copy,我正试图将这个小的.bat脚本重写成一个.py文件,主要是为了练习,但是我很难让整个shutil模块对我有利,似乎有很多方法可以使用copy、delete和dircreate 但我的主要希望是有人能将这些基本命令转换成一个工作脚本,这样我在处理其他脚本时就有了一些东西,希望最终我能通过使用开始理解 任何帮助都太好了!:) 发行日期: 嘿,请尝试重新发布,但如果我仅从脚本中取出启动命令并将其放入如下新脚本中,则脚本在脚本末尾无法同时启动应用程序。它将启动第一个应用程序,并在第一个应用程序关闭后启动
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
subprocess.call(['explorer.exe', data_dir])
subprocess.call(['PnkBstrA.exe'], cwd=data_dir)
编辑:我还需要把这个编辑过的启动文件直接放在文件夹中,其中有两个程序应该启动,这样它才能正常工作
波本试验:
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
subprocess.Popen(['explorer.exe', data_dir])
subprocess.call(['PnkBstrA.exe'], cwd=data_dir)
编辑路径名:
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
subprocess.Popen(['explorer.exe', data_dir])
subprocess.call([r'C:\C:\Users\Spanjer\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\Data\PnkBstrA.exe'], cwd=data_dir)
编辑路径名CMD读数:
C:\Users\Spanjer\Desktop>installtest2.py
Traceback (most recent call last):
File "C:\Users\Spanjer\Desktop\installtest2.py", line 9, in <module>
subprocess.call([r'C:\C:\Users\Spanjer\AppData\Roaming\Microsoft\Windows\Sta
rt Menu\Programs\Data\Data\PnkBstrA.exe'], cwd=data_dir)
File "C:\Python27\lib\subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
C:\Users\Spanjer\Desktop>
请尝试以下代码:
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
dest_dir = os.path.join(data_dir, r'Data')
if not os.path.exists(data_dir):
os.mkdir(data_dir)
if os.path.exists(dest_dir):
shutil.rmtree(dest_dir)
shutil.copytree(r"Data", dest_dir)
shutil.copy(r"System32.lnk", menu_dir)
subprocess.call(['explorer.exe', data_dir])
subprocess.call(['PnkBstrA.exe'], cwd=data_dir)
os.path.expandvars(路径)
返回展开了环境变量的参数。子串
格式$name或${name}被环境的值替换
变量名。格式错误的变量名和对不存在变量的引用
变量保持不变
在Windows上,除了$name和$name之外,还支持%name%扩展
${name}
os.mkdir(路径[,模式])
使用数字模式创建名为path的目录。默认模式
是0777(八进制)。在某些系统上,模式被忽略。在使用的地方,
首先屏蔽当前umask值。如果目录已经存在
存在,则引发OSError
shutil.副本(src、dst)
将文件src复制到文件或目录dst。如果dst是一个目录,
在中创建(或覆盖)与src具有相同基名的文件
指定的目录。权限位被复制。src和dst是
以字符串形式给出的路径名
*调用(args,stdin=None,stdout=None,stderr=None,shell=False)
运行args描述的命令。等待命令完成,然后重试
返回returncode属性
上面所示的论点仅仅是最常见的论点
在下面的常用参数中(因此在
缩写签名)。完整函数签名与
Popen构造函数的函数-此函数传递所有提供的
参数直接传递到该接口
我更新了代码。请检查。K立即测试是否可以删除
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\Data
。如果您不通知我,我必须定期刷新此页面以检查任何更改。@SpanjerRyan,将subprocess.call(['explorer.exe',data\u dir])
替换为subprocess.Popen(['explorer.exe',data\u dir])
。如果问题没有解决,我建议你再发一个问题。@SpanjerRyan,我的意思是用Popen
替换call
。(仅适用于第一次调用
)虽然要启动appsChange['PnkBstrA.exe']
到[r'C:\PATH\to\PnkBstrA.exe']
,但在启动时它仍必须位于其主文件夹中。不要按原样键入PATH\TO
,用真实路径替换它。@SpanjerRyan,那是我的错误。从]
(->]
)中卸下一个支架。
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
dest_dir = os.path.join(data_dir, r'Data')
if not os.path.exists(data_dir):
os.mkdir(data_dir)
if os.path.exists(dest_dir):
shutil.rmtree(dest_dir)
shutil.copytree(r"Data", dest_dir)
shutil.copy(r"System32.lnk", menu_dir)
subprocess.Popen([r'C:\Users\Spanjer\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\Data\explorer.exe'], cwd=data_dir)
subprocess.call([r'C:\Users\Spanjer\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\Data\PnkBstrA.exe'], cwd=data_dir)
import os
import shutil
import subprocess
data_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
menu_dir = os.path.expandvars(r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
dest_dir = os.path.join(data_dir, r'Data')
if not os.path.exists(data_dir):
os.mkdir(data_dir)
if os.path.exists(dest_dir):
shutil.rmtree(dest_dir)
shutil.copytree(r"Data", dest_dir)
shutil.copy(r"System32.lnk", menu_dir)
subprocess.call(['explorer.exe', data_dir])
subprocess.call(['PnkBstrA.exe'], cwd=data_dir)