您无法获取参数的原因是因为您打破了.py 关联,因此您可以双击这些文件以在NotePad ++, 中打开它们,随后打破.pyw关联来执行.py应该做的。
简而言之,您忘记在您的“自定义”(损坏).pyw关联的Python.exe命令 行的末尾包含%*
。
ASSOC和FTYPE命令用于显示关联和文件类型,即 运行哪个程序来处理具有特定扩展名的文件。这里是 什么这些命令产生我的系统上:
C:\test>assoc .py
.py=Python.File
C:\test>assoc .pyw
.pyw=Python.NoConFile
C:\test>ftype python.file
python.file="C:\Python27\python.exe" "%1" %*
C:\test>ftype python.noconfile
python.noconfile="C:\Python27\pythonw.exe" "%1" %*
正常的.py协会运行python.exe有一个控制台窗口,以便您 可以看到报表打印输出。
正常的.pyw关联运行pythonw.exe而没有控制台窗口。
您可以在每个命令行末尾看到一个%*
。这就是将 参数发送给命令的原因。 (实际上,%1
是第一个参数,并%*
意味着“所有剩余的参数”。)
当您尝试运行在命令行Python文件而无需键入其 扩展或最初的“蟒蛇”命令,几件事情发生。
首先使用PATHEXT环境变量来查找匹配的扩展名。 在你的情况下,它发现你的命令名称“gcc_opt”+ .PYW导致一个 匹配文件。
那么对于.PYW文件关联抬头一看,发现该文件类型 Python.NoConFile,而你的情况设置为“python.exe”(应该是 pythonw.exe)。 (您可以在注册表中的HKEY_CLASSES_ROOT下看到这些信息。)
然后系统创建一个从命令模板实际的命令行中发现 该文件类型,而你的情况可能是
"[your-python-path]python.exe" "%1"
这告诉它仅使用第一个参数,你的Python脚本名称 “gcc_opt.pyw”。
快速解决方法是将%*
添加到该命令的末尾。
正确的修复方法是将事情恢复到正确的关联和打开Python文件以便通过更标准的方法编辑(将图标拖放到 NotePad ++上,或者右键单击并使用NotePad ++编辑)。
尝试将目录切换到gcc_opt的目录并运行:'python gcc_opt.pyw HelloWorld.c -o HelloWorld.exe -shared' – rubik