Сценарій DOS .bat не передає аргументів


0

У нас є проблема на одному ПК, який, здається, не вшановує аргументи у .bat-скриптах, тобто не передає їх на викликані сценарії python. Це чудово працює на 10 або близько інших подібних машинах.

У нас такий сценарій кажана:

@REM Just pass all arguments directly to the python script of the same name
@%~dpn0.py %*

На цьому ПК видно, що аргументи не передаються викликаному скрипту python.

Ця ідіома використовується повсюдно в наших просторах побудови - і ми не можемо розібратися, чому вона не працює лише на одній машині.

Чи є якісь пропозиції щодо причини чи як ми можемо налагодити проблему?

  • ОС: Windows 7 Pro, 64-розрядна
  • Версія Python: 2.7.6

3
Що для налагодження, що станеться, якщо echo %*замість того, щоб викликати свій скрипт Python і передавати параметри? Чи можете ви бачити всі аргументи? Чи досягли ви межі командного рядка 8191, як пояснено тут? support.microsoft.com/kb/830473
JSanchez

Відповіді:


2

Клер задала це запитання від мого імені, але я з тих пір працював над тим, що відбувається. Дякую JSanchez за стартовий вказівник на відповідь. Проблема була не в bat, а в пітоні, який він викликав; Я знайшов роботу, де набирав текст

python the_python_script.py the arguments 

працювали вже. Що мені не прийшло в голову - це перевірити просто набравши текст

the_python_script.py the arguments

в командному рядку та дозволяючи Windows подбати про те, який пітон використовувати для запуску скрипту

Коли я зробив це так, програма виявила те саме питання - без аргументів.

Це в свою чергу тоді призвело мене до

Тож я перевірив реєстр - моя асоціація справді була порушена

Виправлено, і тепер це, здається, працює ... тому це був не .batсценарій, а асоціація файлів python.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.