文件名被多次追加

时间:2012-07-31 15:51:46

标签: for-loop cmd append dos filenames

我正在使用批处理文件追加多个文件名。

对于文件:1.txt,2.txt,3.txt,4.txt,5.txt - 我想附加copy_1.txt

set "nname=copy_"

for %%A in (*.txt) do (
ren %%A %nname%%%A
)
exit

但是,循环似乎循环回到第一个文件并重新附加文件名。

这是cmd输出:

> for %A in (*.txt) do (ren %A copy_%A )
> (ren 1.txt copy_1.txt )
> (ren 2.txt copy_2.txt )
> (ren 3.txt copy_3.txt )
> (ren 4.txt copy_4.txt )
> (ren 5.txt copy_5.txt )
> (ren copy_1.txt copy_copy_1.txt )

有人可以向我解释为什么会发生这种情况吗?如何才能解决这个问题?

我尝试添加“异常处理程序”,但没有用。

set "nname=copy_"

for %%A in (*.txt) do (
if exist %nname%%%A goto :exit
ren %%A %nname%%%A
)
:exit
echo file exists

提前致谢!

1 个答案:

答案 0 :(得分:1)

在开始处理重命名命令之前,shell没有完成其文件列表,因此第一个重命名命令的结果,即copy_1.txt,与* .txt匹配。

避免它的一种方法:

for /F "usebackq" %%A in (`dir /b *.txt`) do (ren %%A %nname%%A)