我正在尝试将这个小的 .bat 脚本重写为 .py 文件,主要是为了练习,但我在让整个shutil模块对我有利时遇到了很多麻烦,似乎有很多方法可以使用副本,删除和目录创建。
但我的主要希望是有人可以将这些基本命令转换成一个工作脚本,这样我在处理其他脚本时就有了一些事情要做,并希望最终通过使用开始理解。
任何帮助都会很棒!:)
SET USERNAME
:: Create new directory
md "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data"
COPY "Data" "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data"
COPY "System32.lnk" "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
start /d "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data" explorer.exe
start /d "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data" PnkBstrA.exe
启动问题的:
嘿 srry 重新发布,但脚本无法在脚本末尾启动两个应用程序,如果我只从脚本中取出启动命令并将它们放入如下所示的新脚本中。一旦第一个应用程序关闭,它就会启动第一个应用程序和下一个应用程序。
似乎它被设置为一个接一个地启动应用程序,导致它们不能同时运行。
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)
编辑:我还需要将此编辑后的启动文件直接放在文件夹中,其中包含应该启动的 2 个程序以使其正常运行。
公开测试:
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>
最终脚本 100% 工作:
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)