Board logo

标题: 求救~~為何會死循環…… [打印本页]

作者: Waterlive     时间: 2007-5-15 16:55    标题: 求救~~為何會死循環……

偶新学批处理
     今天看到FOR循环,起了点念头,写了几句东西~
     功能是:检查所输入路径是否有TXT文件,有则启动命令行~
     写好后试了遍,输入:D:\更新……我在里面新建了个.txt,没问题
     于是,想想,再输入:D:\……结果一直打开cmd.exe,机子跨了~
     D盘虽然有很多的.txt,但不至于如此地步……
     然后尝试换G盘,里面只有1个.txt,结果也跨了~
     所以想问问,我这代码有什么问题麽?为何會出現這情况?

代码如下:
@echo off
echo 輸入路径
set /p p=">>"

for /r "%p%" %%i in (*.txt) do start cmd.exe
昨天發錯地方嘞~

注:上面所说的G盘为备份盘,只有.gho和1个TXT共2个文件,无文件夹

[ Last edited by Waterlive on 2007-5-17 at 12:22 AM ]
作者: ttyp     时间: 2007-5-15 17:01
/r 参数是遍历目录,如果你的目录里有N个txt文件,就会执行N次CMD.EXE
作者: bjsh     时间: 2007-5-15 17:32
确实是这个问题;
/r的历遍目录不只是历遍你输入的目录;
还包括其中的各层子文件夹;
比如你输入G:\;
历遍的是整个G盘而不仅仅是根目录下
作者: dikex     时间: 2007-5-15 17:42
for /r只是一个遍历目录的命令,它本身不会判断的
作者: Waterlive     时间: 2007-5-17 00:19
看来是我没说清楚了……我说的G盘只有1个TXT文件是整个盘
而不是说根目录底下只有1个!我G盘是备份盘,没文件夹,就个.gho和为了测试这代码而新建的TXT文件。所以才有疑问……
作者: fengzi     时间: 2007-5-17 12:02
为什么不
for /r g: %%i in (*.txt) do start cmd.exe
不SET也可以啊`
作者: zhoushijay     时间: 2007-5-17 19:33
于是,想想,再输入:D:\……结果一直打开cmd.exe,机子跨了~

你输入的是D盘,D盘不止一个TXT文件的吧,这样当然会打开许多CMD来.
作者: Waterlive     时间: 2007-5-18 14:45
回6楼,我原意是想通过输入路径,然后去搜索,并局限于某个地方……

还有回7楼的……我对你没话说,麻烦你仔细看看前面大家的发言以及我的原贴