如何通过命令行运行带参数的py2exe编译exe文件并解决PowerShell报错
解决方案
你遇到的报错均由PowerShell的命令解析规则导致,和Python代码、py2exe编译结果无关:
- 第一种写法里,双引号包裹的exe路径被PowerShell识别为普通字符串,后续的
-arg1被判定为无效语法单元 - 第二种写法里,
-arg1被识别为Start-Process(start是该命令的别名)本身的参数,而不是传给test.exe的参数
方案1:路径无空格时直接运行
如果exe路径不包含空格,不需要加引号,直接执行即可:
C:\Users\test.exe -arg1 "Arg1" -arg2 "Arg2" -arg3 "arg3"
方案2:路径有空格时用调用运算符&
如果路径包含空格必须用双引号包裹,在引号前加&告诉PowerShell后续内容是要执行的程序:
& "C:\Users\test.exe" -arg1 "Arg1" -arg2 "Arg2" -arg3 "arg3"
方案3:使用start/Start-Process的正确写法
如果需要用start启动程序,必须通过-ArgumentList参数传递要发给exe的所有参数:
start -FilePath "C:\Users\test.exe" -ArgumentList "-arg1","Arg1","-arg2","Arg2","-arg3","arg3"
如果需要保留控制台窗口查看打印输出,额外添加-NoNewWindow -Wait参数:
start -FilePath "C:\Users\test.exe" -ArgumentList "-arg1","Arg1","-arg2","Arg2","-arg3","arg3" -NoNewWindow -Wait
附加说明
你的参数解析代码存在笔误:z = args.arg2需要改为z = args.arg3,否则第三个打印输出的会是第二个参数的内容。
内容的提问来源于stack exchange,提问作者abdullatif alnajim
相关产品推荐
相关产品推荐

