.bat 文件不工作 |当 .bat 文件为 运行 时显示无效语法 | Python 3.4.0

.bat file doesn't work | Shows invalid syntax when .bat file is run | Python 3.4.0

.bat文件:

@py C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\TestProgram(.bat batch file and shebang line usecase).py %*

@pause

.py文件:

#! python3

print('Hello World, this is a test program for showing the use of .bat batch files, and the role of the shebang line.')

当我在 PowerShell 或命令提示符中 运行 .bat 文件时:

PS C:\Users\Universal Sysytem>  py "C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\BatchFile-TestProgram.bat"
  File "C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\BatchFile-TestProgram.bat", line 1
    @py C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\TestProgram(.bat batch file and shebang line usecase).py %*
        ^
SyntaxError: invalid syntax

P.S:

如何解决这个问题?

不要使用 py 标签,只需简单地写下 .bat 文件的文件路径:

C:\My\Path\To\stack.py
pause

如果您使用 .bat 文件来 运行 此代码:

print("Hello")

输出将是:

C:\My\Path\To\stack.py>C:\My\Path\To\stack.py\stack.py
Hello

C:\My\Path\To\stack.py>pause
Press any key to continue . . .

问题在于

py "C:\...\BatchFile-TestProgram.bat"

将尝试使用 Python 解释器 运行 .bat 文件。这是一个错误,因为 Python 解释器理解 Python 语言但不理解 .bat/Powershell 语言,.bat 文件是用这种语言编写的。

@py C:\Users\... 已经无效 Python 语法,因为 @py 被视为装饰器,装饰器后面不能跟符号名称如 C.

如何解决这个问题:运行 使用 Powershell 的 .bat 文件(假设 .bat 文件本身是正确的)或者完全简单地丢弃 .bat 文件运行:

py "C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\TestProgram(.bat batch file and shebang line usecase).py"

如果您希望 Python 代码暂停(与 @pause 一样),您可以在脚本末尾请求用户输入:

print("This is my script, hello!")
# run some code...

# wait for input, then exit
input("Press ENTER to exit...")

各位,我终于解决了!非常感谢大家,回答我的问题或通过评论提供反馈!我非常感谢您抽出宝贵时间来帮助像我这样的菜鸟。谢谢!:)

好的,所以解决方案:

首先,我对我的 .bat file/batch 文件做了一点改动。 我用双引号 ("):

将 .py 文件的路径括起来
@py "C:\Users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\TestProgram(.bat batch file and shebang line usecase).py"
@pause

最后,我只是 运行 .bat 文件,而不是 运行 在其位置路径的开头使用 py 设置 .bat 文件. 在我的 PowerShell 中,我移动到 .bat 文件的目录,然后 运行 .bat 文件:

.\BatchFile-TestProgram.bat

它返回了正确的输出:

Hello World, this is a test program for showing the use of .bat batch files, and the role of the shebang line.
Press any key to continue . . .

此外,我能够从 运行 对话框 (WIN + R) 运行 批处理文件。输出与直接在 PowerShell 中 运行 批处理文件相同。我刚刚输入了批处理文件的完整路径,用双引号将其括起来:

"c:\users\Universal Sysytem\Desktop\Python Scripts (Automate the Boring Stuff)\Automate the Boring Stuff with Python\BatchFile-TestProgram.bat"

我学到了什么:

  • py 执行在Python 中写入的文件。它不执行 .bat 文件,因为 Python 解释器不理解写入 .bat 文件的 CMD 语法。
  • 重要的是要确保使用引号(双引号或单引号)将路径括起来,尤其是在将路径写入文件夹或文件时单词之间有空格时。 当然,如果您在命令提示符下,则不能使用单引号括起路径,因为 CMD 不会将单引号视为常规字符。
  • '@' 告诉命令提示符在 运行 运行程序(.py 文件)时不要显示整行(路径或命令 'pause'),而只是执行程序。