Batch file 递归地将文件夹名称附加到Windows批处理文件中的文件

Batch file 递归地将文件夹名称附加到Windows批处理文件中的文件,batch-file,cmd,windows-scripting,Batch File,Cmd,Windows Scripting,我想将我的文件夹名附加到子文件夹中所有可用的.txt文件中。下面是文件/目录结构。我需要在Windows批处理脚本中实现这一点 C:\Source\Source1\1\a.txt C:\Source\Source1\1\b.txt C:\Source\Source1\2\a.txt C:\Source\Source1\2\b.txt C:\Source\Source2\3\a.txt C:\Source\Source2\3\b.txt 应按如下方式重命名上述文件: C:\Source\Sourc

我想将我的文件夹名附加到子文件夹中所有可用的.txt文件中。下面是文件/目录结构。我需要在Windows批处理脚本中实现这一点

C:\Source\Source1\1\a.txt C:\Source\Source1\1\b.txt

C:\Source\Source1\2\a.txt C:\Source\Source1\2\b.txt

C:\Source\Source2\3\a.txt C:\Source\Source2\3\b.txt

应按如下方式重命名上述文件:

C:\Source\Source1\1\1\u a.txt C:\Source\Source1\1\1\u b.txt

C:\Source\Source1\2\2\u a.txt C:\Source\Source1\2\u b.txt

C:\Source\Source2\3\3\u a.txt C:\Source\Source2\3\3\u b.txt

类似地,我有Source1…Source30,在每个源目录下,我将有多个编号不同的文件夹。我需要重命名这些目录下的所有文件,并将编号(目录名)附加到文件名

下面是我写的:

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

for /r %%x in (*.txt) do ren "%%x" "%CurrDirName%_%%x"
有了这个,我可以在一个目录中实现它。我不能让它递归。你们能帮我个忙吗

@echo OFF
SETLOCAL EnableExtensions
for /F "delims=" %%G in ('dir /B /S "C:\Source\*.txt"') do (
    for %%g in ("%%~dpG.") do ECHO rename "%%~fG" "%%~nxg_%%~nxG"
)
pause
其中循环的
为:

  • 外部
    %%G
    循环创建
    .txt
    文件的静态列表(递归),并
  • 内部
    %%g
    循环获取每个特定文件的父文件夹
出于调试目的,
rename
命令仅使用
ECHO
显示。要使其运行,请删除word
ECHO
(在调试之前)


此外,我会考虑检查一个特定文件是否已经重命名……/P>这不是DOS,请删除DOS标签。