เมื่อคุณรันสคริปต์โดยไม่ต้องพิมพ์ "python" ข้างหน้าคุณจำเป็นต้องรู้สองสิ่งเกี่ยวกับวิธีที่ Windows เรียกใช้โปรแกรม อันดับแรกคือค้นหาว่า Windows คิดว่าเป็นไฟล์ประเภทใด:
C: \> Assoc .py
.py = Python.File
ถัดไปคุณต้องรู้ว่า Windows ดำเนินการกับส่วนขยายนั้นอย่างไร มันเกี่ยวข้องกับไฟล์ประเภท "Python.File" ดังนั้นคำสั่งนี้จะแสดงให้เห็นว่ามันจะทำอะไร:
C: \> ftype Python.File
Python.File = "c: \ python26 \ python.exe" "% 1"% *
ดังนั้นในเครื่องของฉันเมื่อฉันพิมพ์ "blah.py foo" มันจะดำเนินการคำสั่งที่แน่นอนนี้โดยไม่มีผลลัพธ์ที่แตกต่างไปกว่าถ้าฉันพิมพ์ตัวเต็มด้วยตัวเอง:
"c: \ python26 \ python.exe" "blah.py" foo
หากคุณพิมพ์สิ่งเดียวกันรวมถึงเครื่องหมายคำพูดคุณจะได้ผลลัพธ์ที่เหมือนกับเมื่อคุณพิมพ์ "blah.py foo" ตอนนี้คุณอยู่ในฐานะที่จะคิดหาปัญหาที่เหลือด้วยตัวคุณเอง
(หรือโพสต์ข้อมูลที่เป็นประโยชน์เพิ่มเติมในคำถามของคุณเช่นสำเนาจริงที่ตัดแล้ววางของสิ่งที่คุณเห็นในคอนโซลโปรดทราบว่าผู้ที่ทำสิ่งเหล่านี้จะได้รับการโหวตจากคำถามและได้รับคะแนนชื่อเสียงและผู้คนจำนวนมากขึ้น มีแนวโน้มที่จะช่วยให้พวกเขามีคำตอบที่ดี)
นำเข้ามาจากความคิดเห็น:
แม้ว่าการเชื่อมโยงและ ftype จะแสดงข้อมูลที่ถูกต้อง แต่ก็อาจเกิดขึ้นได้ว่าอาร์กิวเมนต์ถูกตัดออก สิ่งที่อาจช่วยได้ในกรณีนั้นคือการแก้ไขคีย์รีจิสทรีที่เกี่ยวข้องโดยตรงสำหรับ Python ตั้งค่า
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
กุญแจสำคัญในการ:
"C:\Python26\python26.exe" "%1" %*
ก่อนหน้านี้น่าจะ%*
หายไป ในทำนองเดียวกันตั้ง
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
เป็นค่าเดียวกัน ดูhttp://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
เส้นทางรีจิสทรีอาจแตกต่างกันไปใช้python26.exe
หรือpython.exe
หรือแล้วแต่สิ่งที่มีอยู่แล้วในรีจิสทรี
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command