曲径通幽论坛
标题:
批处理文件名与命令名重名时发生的错误
[打印本页]
作者:
beyes
时间:
2012-12-13 21:40
标题:
批处理文件名与命令名重名时发生的错误
当一个批处理文件名和系统内部命令(系统环境变量路径里的命令)重名时,会遇到死循环的错误(命令行窗口中不断的执行 ping 这个命令)。这个错误比较隐蔽,也有点匪夷所思。
比如在批处理写 ping 192.168.1.1 就这么一句话,但是如果你把这个批处理文件保存为 ping.bat 时,那么这个死循环错误就会发生;当然,对于别的内部命令 netstat 也是一样的。
如果你的 ping.bat 这个脚本使用的是 start ping 192.168.1.1 ,那你就面临着窗口炸弹的袭击,这时候得毫不犹豫按下 Ctrl + Alt + Del 组合键,注销系统才是王道。
为什么会出现的情况呢?
实际上,你无需在脚本里使用系统命令,而是随便填写一个字符串,并且以这个字符串作为脚本的文件名。当你运行该脚本时,你会看到一个黑乎乎的命令行窗口,什么都没有,但如果这时打开任务管理器,那么会看到 CPU 资源占用一下子飙升,在“进程”里会看到一个 cmd.exe 的进程的 CPU 占用率也是极高的。
由此可见,当执行脚本里的“字符串”命令时,脚本解析器首先会在当前目录下查找是否有相应的命令,如果有,则执行;如果没有,再去查找其它系统环境变量路径里是否存在该命令。这样一来,就解释了为什么保存与系统命令重名的批处理文件名时会发生死循环的现象。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2