问题描述
我在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文件。
谁能指出我正确的方向来完成这项工作?
1楼
从powershell控制台本身,您可以像这样直接运行:
PS C:\Python27> python C:\Users\pc2\script.py
如有必要,请在powershell配置文件中编辑PATHTEXT环境变量:
$env:PATHEXT += ";.py"
在批处理中,您还可以输入相同的命令来执行python。 将文件另存为something.bat:
python C:\Users\pc2\script.py
希望能帮助到你。
2楼
要执行一个脚本:
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似乎忽略了它。)