我写了这么个批处理
a.bat
=====================
for %%f in (*.txt) do (
if not %%f==3.txt (ren %%f %%f.ok
) else ren 4.txt 2.txt
dir/b)
pause
=====================
a.bat所在目录有4个txt文件
1.txt 2.txt 3.txt 4.txt
for循环会遍历这4个文件,但是当处理到3.txt时,我把4.txt重命名为2.txt,本指望下次会迭代到2.txt这个文件(虽然2.txt已处理过,但此时的2.txt已不是原来的文件了),但电脑反映似乎太迟钝,仍然去处理4.txt,当然就产生了“系统找不到指定文件”的错误
换句话说,自从for开始执行,它就确定了它所处理的对象(由文件名唯一标识,而不是文件本身),即使已经发生改变,也义无返顾
有点类似于变量延迟
有没有什么解决办法呢?
[ Last edited by ssyfzy on 2007-10-7 at 01:27 PM ]
a.bat
=====================
for %%f in (*.txt) do (
if not %%f==3.txt (ren %%f %%f.ok
) else ren 4.txt 2.txt
dir/b)
pause
=====================
a.bat所在目录有4个txt文件
1.txt 2.txt 3.txt 4.txt
for循环会遍历这4个文件,但是当处理到3.txt时,我把4.txt重命名为2.txt,本指望下次会迭代到2.txt这个文件(虽然2.txt已处理过,但此时的2.txt已不是原来的文件了),但电脑反映似乎太迟钝,仍然去处理4.txt,当然就产生了“系统找不到指定文件”的错误
换句话说,自从for开始执行,它就确定了它所处理的对象(由文件名唯一标识,而不是文件本身),即使已经发生改变,也义无返顾
有点类似于变量延迟
有没有什么解决办法呢?
[ Last edited by ssyfzy on 2007-10-7 at 01:27 PM ]
