当前位置: 代码迷 >> python >> 从.bat文件运行python脚本并使用Powershell
  详细解决方案

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

热度:139   发布时间:2023-07-16 11:23:05.0

我在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文件。

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

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

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

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

$env:PATHEXT += ";.py"

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

python C:\Users\pc2\script.py

希望能帮助到你。

  • 要执行一个脚本:

     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()块中定义的param()
(顺便说一句:您的文件路径具有多余的尾随空格,但是PowerShell似乎忽略了它。)