我有一个调用python解释器的Windows批处理文件:
python -m ...
有效。但现在我有第二个批处理文件调用第一个批处理文件。当我运行此批处理文件时,出现错误:
'蟒'不被视为内部或外部命令, 可操作程序或批处理文件。
我不明白为什么第二批文件无效。
如果有一个具体的例子,这里有一个:
在 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
'蟒'不被识别为内部或外部命令,可操作程序或批处理文件。
按任意键继续。 。
答案 0 :(得分:2)
您通过在批处理中设置它来完全破坏系统变量%path%
。现在你的系统再也找不到python
了。
只需将第二批更改为:
@echo off
set "mypath=%~dp0batch1.cmd"
start "" %mypath%
更好地解释%path%
变量。它保存任何可能的文件位置的路径,以搜索要执行或打开的文件,而无需每次都由用户指定完整路径。通过在cmd
中运行命令,如python,它首先检查批处理开始的当前目录,如果没有python.exe,它将搜索%path%
变量中的每个分号分隔路径。当您设置一个新的%path%
变量时,它只知道新设置的路径,并且无法找到要执行的python,并且您在Windows上获得了最常见的cmdline错误。
另外请注意,如果要在同一窗口中启动batch1,可以考虑call
批处理而不是start
call "%mypath%"