您無法獲取參數的原因是因爲您打破了.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