从.bat文件运行python脚本并使用Powershell

时间:2018-02-11 15:11:02

标签: python powershell batch-file

我在W10服务器上运行了几个python脚本,我正在寻找一种方法来打开它们。

我手动运行脚本在脚本文件夹上打开PowerShell并执行pythonw script.py

我尝试了几种方法,没有结果......

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& 'C:\Users\pc2\AppData\Local\Programs\Python\Python36-32\pythonw.exe C:\Users\pc2\script.py'"

也经过测试:

powershell.exe -noexit -command "'pythonw C:\Users\pc2\script.py'"

powershell -command "& {&'C:\Users\pc2\AppData\Local\Programs\Python\Python36-32\pythonw.exe ' C:\Users\pc2\script.py}"

以上都没有做任何事......他们应该使用pythonw打开script.py文件。

有人能指出我正确的方向来完成这项工作吗?

2 个答案:

答案 0 :(得分:0)

从powershell控制台本身,您可以直接运行:

PS C:\Python27> python C:\Users\pc2\script.py

如有必要,请在powershell配置文件中编辑 PATHTEXT 环境变量:

$env:PATHEXT += ";.py"

在批处理中,您也可以使用相同的命令来执行python。将文件另存为something.bat:

python C:\Users\pc2\script.py

希望它有所帮助。

答案 1 :(得分:0)

  • 执行单个脚本:

    powershell -c "pythonw 'C:\Users\pc2\script1.py'"
    

注意:仅当后者包含空元字符(如空格)时,才需要在文件路径周围包含'...'。 或者,  从""...""(批处理文件)调用时使用cmd.exe,从PowerShell调用时使用`"...`"

  • 要执行多个脚本,按顺序

    powershell -c "& { $Args | % { pythonw $_ } } 'C:\Users\pc2\script1.py' 'C:\Users\pc2\script2.py'"
    

注意:这仅在从cmd.exe(批处理文件)调用时有效 (在PowerShell中,只需直接执行"..."内的内容)

至于你尝试过什么,只关注PowerShell最终看到的命令字符串:

  • & 'C:\Users\pc2\AppData\Local\Programs\Python\Python36-32\pythonw.exe C:\Users\pc2\script.py'

问题在于您将整个命令行传递给&,而它只需要可执行文件名称;
 C:\Users\pc2\AppData\Local\Programs\Python\Python36-32\pythonw.exe C:\Users\pc2\script.py显然不是有效的可执行文件名/路径。

  • 'pythonw C:\Users\pc2\script.py'

由于被'...'括起来,这是一个字符串文字,PowerShell只是输出 - 没有命令永远被执行。

  • & {&'C:\Users\pc2\AppData\Local\Programs\Python\Python36-32\pythonw.exe ' C:\Users\pc2\script.py}

由于您正在使用脚本块{ ... }),因此您将C:\Users\pc2\script.py作为参数传递,因此,您必须通过自动$Args变量或通过param()块中定义的参数在块内引用它。
(顺便说一下:你的文件路径有一个无关的尾随空间,但PowerShell似乎忽略了这一点。)