批处理文件中需要绝对路径?

时间:2018-04-25 16:11:18

标签: windows batch-file

我有一个调用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

     

'蟒'不被识别为内部或外部命令,可操作程序或批处理文件。

     

按任意键继续。 。

1 个答案:

答案 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%"