Python .Bat To.Py重写

Python .Bat To.Py重写,python,python-2.7,batch-file,copy,Python,Python 2.7,Batch File,Copy,我正试图将这个小的.bat脚本重写成一个.py文件,主要是为了练习,但是我很难让整个shutil模块对我有利,似乎有很多方法可以使用copy、delete和dircreate 但我的主要希望是有人能将这些基本命令转换成一个工作脚本,这样我在处理其他脚本时就有了一些东西,希望最终我能通过使用开始理解 任何帮助都太好了!:) 发行日期: 嘿,请尝试重新发布,但如果我仅从脚本中取出启动命令并将其放入如下新脚本中,则脚本在脚本末尾无法同时启动应用程序。它将启动第一个应用程序,并在第一个应用程序关闭后启动

我正试图将这个小的.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)