从Python运行批处理文件

时间:2018-01-17 15:31:16

标签: 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'未被识别为内部   或外部命令,可操作程序或批处理文件。

4 个答案:

答案 0 :(得分:1)

在使用某些相对重定向路径时,将工作目录更改为脚本目录。推送将当前目录更改为任何驱动器,并可以映射网络驱动器。 &&链命令仅在左手命令成功时才运行右手命令。 %UserProfile%是一个标准的环境变量,通常比C:\Users\Username的固定路径更好。

import os
Practice = r'pushd "%UserProfile%\Desktop\Practice Folder" && Practice.bat'
os.system(Practice)

答案 1 :(得分:1)

尝试使用call模块中的subprocess您只需将命令括在双引号中。

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"')

这有助于解决您的问题。

答案 2 :(得分:0)

您可能需要使用两种类型的引号,例如

import os

Practice = r"'C:\Users\Username\Desktop\Practice Folder\Practice.bat'"
os.system(Practice)

实际上,您的字符串不包含引号 - 您需要在字符串中包含引号,否则Windows会认为Folder\Practice.bat是命令的参数而不是文件路径的延续< / p>

答案 3 :(得分:0)

试试这个

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"')