从Python运行批处理文件
我试图通过python运行一个批处理文件;但是,它没有识别路径。它停止读取“练习”和“文件夹”之间的空格后的路径。我怎样才能解决这个问题?我试过使用r和前后斜杠。任何帮助都会很棒。谢谢大家!从Python运行批处理文件,python,batch-file,Python,Batch File,我试图通过python运行一个批处理文件;但是,它没有识别路径。它停止读取“练习”和“文件夹”之间的空格后的路径。我怎样才能解决这个问题?我试过使用r和前后斜杠。任何帮助都会很棒。谢谢大家! import os Practice = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat" os.system(Practice) “C:\Users\Username\Desktop\Practice”未被识别为内部 或外部命令、可操作
import os
Practice = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat"
os.system(Practice)
“C:\Users\Username\Desktop\Practice”未被识别为内部
或外部命令、可操作程序或批处理文件
您可能需要使用两种类型的引号,例如
import os
Practice = r"'C:\Users\Username\Desktop\Practice Folder\Practice.bat'"
os.system(Practice)
实际上,字符串不包含引号-您需要在字符串中包含引号,否则Windows会认为文件夹\Practice.bat
是命令的参数,而不是文件路径的延续
import os
Practice = os.path.abspath(r"C:\Users\Username\Desktop\Practice Folder\Practice.bat")
编辑:
像这样的事情对我很有用
os.system(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')
使用某些相对重定向路径时,将工作目录更改为脚本目录。Pushd将当前目录更改为任何驱动器,并可以映射网络驱动器。
&&
链接命令,并且仅在左手命令成功时才运行右手命令%UserProfile%
是一个标准的环境变量,通常比使用固定路径C:\Users\Username
更好
import os
Practice = r'pushd "%UserProfile%\Desktop\Practice Folder" && Practice.bat'
os.system(Practice)
尝试使用
子流程
模块中的调用
。
只需将命令用双引号括起来。
from subprocess import call
call(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')
(请注意报价的顺序…)
如果您注意引号的顺序,这甚至可以用于os.system()
from os import system
system(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')
这将有助于解决您的问题。这会给出“文件名、目录名或卷标语法不正确”错误。如果将
“C:\Users\Username\Desktop\Practice Folder\Practice.bat”
复制/粘贴到命令行中,是否有效?如果没有,则会给出错误“'C:\Users\Username\Desktop\Practice'不能识别为内部或外部命令、可操作程序或批处理文件。是否包含引号?因为它们很重要,所以可以使用。您的代码现在也可以使用:os.system(r''C:\Users\Username\Desktop\Practice Folder\Practice.bat')但现在我必须弄清楚它为什么不执行整个批处理文件。当我双击批处理文件时,它执行所有操作,但从cmd和python执行时,它执行部分操作。给我一个错误“系统找不到指定的路径”。“从批处理文件now.Cool。如果这让你得到了你想要的,那就接受答案来结束这个问题。这正是我所需要的方式!非常感谢。