在Python中运行.vbs scipt不会做任何事情

在Python中运行.vbs scipt不会做任何事情,python,vbscript,automation,Python,Vbscript,Automation,意念 基本上,我的脚本所做的是检查C:/SOURCE中的.txt文件,并为其添加时间戳。要复制它,你基本上可以创建那个文件夹,并在其中放置一些txt文件。然后,它应该运行一个.vbs文件,然后用一些rclone命令运行一个.bat文件,这些命令在这里并不重要。我这样做是因为通过.vbs文件运行rclone命令时不会打开CMD窗口 Python代码 导入时间、操作系统、子流程 尽管如此: 打印开始检查 印刷品================= 时间戳=时间。strftime“%d\u%m\u%H\

意念

基本上,我的脚本所做的是检查C:/SOURCE中的.txt文件,并为其添加时间戳。要复制它,你基本上可以创建那个文件夹,并在其中放置一些txt文件。然后,它应该运行一个.vbs文件,然后用一些rclone命令运行一个.bat文件,这些命令在这里并不重要。我这样做是因为通过.vbs文件运行rclone命令时不会打开CMD窗口

Python代码

导入时间、操作系统、子流程 尽管如此: 打印开始检查 印刷品================= 时间戳=时间。strftime“%d\u%m\u%H\u%m”仅强调:无命名问题 _dir=C:/SOURCE 对于os.ListDir中的fname,请选择\u目录: 如果fname.lower.endswith.txt: printfound+fname 时间。睡眠0.1 new_name={}-{}.txt.formatos.path.splitextfname[0],时间戳 os.renameos.path.jointhe_dir,fname,os.path.jointhe_dir,new_name 时间是0.5 其他: subprocess.call['cscript.exe',copy.vbs] 时间到了 VBScript代码

设置WshShell=CreateObjectWScript.Shell WshShell.runchr34©.bat&Chr34,0 设置WshShell=Nothing Python脚本唯一重要的部分在最后一个else下面,其中subprocess.call应该运行.vbs文件。当运行脚本时会发生什么呢?它显示了在运行CMD时总是出现的前两行,但是没有显示任何内容

我怎样才能解决这个问题?我试过:

subprocess.callcscript copy.vbs subprocess.callcmd/c copy.vbs 两者的结果都是一样的,没有任何作用


有人知道吗?

为什么要调用VBScript来调用Python中的批处理脚本?您应该能够直接从Python代码简单地运行批处理脚本正在执行的任何操作。但是,即使您希望保留批处理脚本,如果没有VBScript作为中介,类似这样的操作也可以

子进程调用['cmd','/c','copy.bat'] 不过,您可能希望给出批处理文件的完整路径,以避免出现工作目录不是您所认为的那样的问题

如果批处理脚本与Python脚本位于同一目录中,则可以使用以下内容构建路径:

导入操作系统 导入子流程 scriptdir=os.path.dirname\u文件__ batchfile=os.path.joinscriptdir,'copy.bat' subprocess.call['cmd','/c',os.path.realpathbatchfile]
似乎没有这样的操作不能用普通Python完成。扫描一个目录,复制一个文件——Python在标准库中拥有所有内容。请参阅os.path和shutil模块


添加VB脚本和启动子进程会使代码复杂且难以调试。

如果不打开cmd窗口,我会这样做。将vbs文件置于两者之间的全部目的是使其对用户不可见。这就是我想做的。哦,你说得对。.bat和.vbs文件的全部目的是使其对用户不可见,但似乎可以直接从python中实现。谢谢你的洞察力,真的没想过!将文件上载到云需要rclone,因此我必须使用它。因为您确实需要使用COM对象,请尝试使用优秀的win32库:请参阅以下链接: