[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

经测试,没有发现楼主的问题。

TOP

我勒个去,又一个杯具,你的文件名为ping.bat,请改成其他的。。。。。。

TOP

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

补充一下:批处理中的名字怎么还会影响里面命令的执行啊??

TOP

回复 4# 蜕变


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

TOP

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

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

TOP

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

TOP

如果楼主非要用ping.bat
可以把批处理里面的文件改成 ping.exe

TOP

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

TOP

返回列表