/ / Абсолютен път, необходими в партида файл? [дубликат] - прозорци, партиден файл

Абсолютен път, необходими в партида файл? [дубликат] - прозорци, партиден файл

Имам пакетен файл на Windows, който се обажда на интерпретатора на Python:

python -m ...

Това работи. Но сега имам втори партиден файл, който се обажда на първия партиден файл. Когато изпълнявам този пакет файл, получавам грешка:

"python" не се разпознава като вътрешна или външна команда, операционна програма или партиден файл.

Не разбирам защо втората партида файл не работи.

Ако това помага да има конкретен пример, тук е едно:

в helloworld.py

print("Hello, world!")

в batch1.cmd

@echo off
echo About to call python...

python -m helloworld

pause
exit

в batch2.cmd

@echo off
set "path=%~dp0batch1.cmd"

start "" %path%

изход:

За да се обадите на Питон

"python" не се разпознава като вътрешна или външна команда, операционна програма или партиден файл.

Натиснете произволен клавиш, за да продължите. , ,

Отговори:

2 за отговор № 1

Вие напълно нарушавате системната променлива %path% като го поставите в партидата. Сега вашата система не може да намери python вече.

Просто променете втората партида на:

@echo off
set "mypath=%~dp0batch1.cmd"
start "" %mypath%

За да обясните %path% променлива по-добре. Той държи пътя към всички възможни местоположения на файловете, за да търси файлове, които да се изпълняват или да се отварят, без да е необходимо пълният път, посочен всеки път от потребител. Като изпълнявате команда в cmd подобно на Python, първо проверява текущата директория, в която е започнала пакета, ако python.exe не е там, тя ще търси всяка отделна точка със точка и запетая в %path% променлива. Когато зададете нов %path% променлива, която знае само за наскоро зададения път и не може да намери Python да изпълни и вие получавате най-често срещаната cmdline грешка в прозорците.

От друга бележка, ако искате да стартирате партида1 в същия прозорец, може би помислете callвместо startтя

 call "%mypath%"