批处理 保存文件名为cmd.bat 循环执行 (一个特例)

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:24:55
有如下的批处理代码
@echo on
cmd
若保存成保存成cmd.bat 则代码无限循环执行cmd语句。而保存成其他文件名则可以正常执行。这是为什么呢?

而其它的批处理代码保存成cmd.bat就不存在这个问题。比如以下的新建10个文件夹的代码保存成cmd.bat就可以正常执行。
@echo off
for /l %%i in (1,1,10) do md %%i
pause

请批处理大虾帮我讲解一下其中的原因。谢谢啦!

@echo on
cmd
因为你这文件名为cmd,批处理代码后面的cmd就又重新运行你个批处理了。下面这些后缀文件类型都不用写后缀名的,所以你代码中的cmd相当于cmd.bat。
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
这些后缀运行的优先顺序从前往后,属于系统变量PATHEXT,你在cmd下输入set就可以查看到。。

另:系统还有一个path路径的变量设置,也就是在不输入程序路径的时候,它首先在批处理当前路径寻找cmd,找到后运行,如果当前目录没有,刚到下面位置去自动寻找,优先顺序从前往后:
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
这个你在cmd下输入set也能查看到。。

其实cmd.exe这个命令在system32文件夹下,写代码的时候简写为cmd,你写在代码里面,同时批处理名也是cmd的话。系统就会优先运行当前这个批处理,
所以才会出现你说的情况。。

pause暂停了当然就不会自动循环了