2013-10-01 98 views
1

我正在尝试使用批处理文件将文件夹名称添加到文件中。我想从1个文件夹中使用文件夹名称。我有,从这里和其他来源:正在添加使用批处理文件将文件夹名称添加到文件

for %%* in (..) do set CurrDirName=%%~n* 

echo %CurrDirName% 

set strPrefix=%CurrDirName% 

for %%a in (*) do rename "%%a" "%CurrDirName%_%%a" 

正确的文件夹名称,但它是夹在将它添加到文件名的无限循环太长的操作系统。我对这件事很陌生,今天就开始了,所以任何帮助都会非常感谢,如果你回复像一个白痴说话,你就不会太远!非常感谢

回答

2

此行为是for命令的已知错误/功能。 for循环生成的文件列表是动态的,这意味着在循环中修改的文件将重新添加到列表中,导致无限循环。

使用dir命令生成一个静态文件列表。

for /f "delims=" %%A in ('dir /b *') do rename "%%A" "%CurrDirName%_%%A" 

请参阅dir /?的所有选项。

欢迎来到批处理脚本的世界。 :)

+1

+1,我不确定它在技术上是一个FOR错误。但它肯定是一个设计限制。 – dbenham

+1

即时通讯这不是一个错误;它更像是来自FCB在CP/M中的历史人为因素。 – Endoro

+0

@Endoro和@dbenham我同意你的意见。 **':'''''for'命令不是特别的问题,但是,一般批量用户不会关心[FCB](http://en.wikipedia.org/wiki/ File_control_block)旧的;只是命令在使用时似乎表现得如何。所以我的目标是[KIS](http://en.wikipedia.org/wiki/KISS_principle)。谢谢你,如果你们中的任何一个有链接到你想发布的底层文件系统的更详细的解释,请做。这将是一个很好的参考。 –

相关问题