Board logo

标题: [其他] 批处理命令set /p var=定义变量在BAT中陷入无限循环? [打印本页]

作者: 蜕变    时间: 2012-2-19 14:30     标题: 批处理命令set /p var=定义变量在BAT中陷入无限循环?

日前刚接触批处理,原本以为很简单的。。。今日试过才知道。
(前些天在百度,google搜过,可能是就不知道什么问题,也没搜到类似的情况)
我写的批处理代码如下:
  1. @echo off
  2. set /p var=输入IP:
  3. ping %var%
  4. pause
复制代码
保存位bat文件,双击运行陷入以下“输入”的循环中
但是在拖到CMD却可以执行
希望各位能点出其中存在的问题。。。先谢谢了
作者: applba    时间: 2012-2-19 14:53

经测试,没有发现楼主的问题。
作者: ivor    时间: 2012-2-19 15:29

我勒个去,又一个杯具,你的文件名为ping.bat,请改成其他的。。。。。。
作者: 蜕变    时间: 2012-2-19 15:34

改了文件名试了一下。。还真是文件名的问题。。刚谢楼上两位的关注。

补充一下:批处理中的名字怎么还会影响里面命令的执行啊??
作者: ivor    时间: 2012-2-19 15:45

回复 4# 蜕变


   当前目录下的程序有最高的运行优先级,如果没有此程序,会去查找path变量中的文件。pathext变量中记录着可以省略后缀名的文件,其中就有.bat
  1. PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
复制代码

作者: 蜕变    时间: 2012-2-19 16:08

本帖最后由 蜕变 于 2012-2-19 16:09 编辑

还是有点迷惑。。。
当文件名是 ping.bat 时双击关文件执行
是怎样出现我上图中的循环的呢??
我百度了一下 pathext变量 还是没明白
求解中。。。。。
希望有人能详细的讲一下。。。或者告诉我去哪找可以解决  都可以
谢谢啦
作者: 蜕变    时间: 2012-2-19 16:28

明白了。。突然明白。。。
我想是这样的:
我把文件保存成 ping.bat 双击执行
执行到第三句 ping %var% 时,注意这里是 ping  (省略了扩展名),这正如 5楼 所说
当前目录下的程序有最高的运行优先级,如果没有此程序,会去查找path变量中的文件。pathext变量中记录着可以省略后缀名的文件名,其中就有.bat
先查找 当前目录 当然 ping.bat 文件先得到匹配
这个 ping 调用了自身。。。(而 改成 ping.exe %var% 问题就解决了,但改文件名比较好。无论如何,从中学到了不少的东西)
陷入循环接不难理解了(如有错误,还请批评指出)
同时也 感谢5楼的提示
作者: applba    时间: 2012-2-19 18:26

如果楼主非要用ping.bat
可以把批处理里面的文件改成 ping.exe
作者: xslxslxsl    时间: 2012-2-19 22:29

虽然自己也注意到这方面的问题,但是今天我知道了此问题形成的原因了,在此学习了,




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2