我想将我的文件夹名称附加到子文件夹中的所有可用.txt文件。下面是文件/目录结构。我需要在Windows BATCH脚本中实现这一点。
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_a.txt C:\ Source \ Source1 \ 1 \ 1_b.txt
C:\ Source \ Source1 \ 2 \ 2_a.txt C:\ Source \ Source1 \ 2 \ 2_b.txt
C:\ Source \ Source2 \ 3 \ 3_a.txt C:\ Source \ Source2 \ 3 \ 3_b.txt
同样,我有Source1 ... Source30,在每个源目录下,我将有多个不同数字的文件夹。我需要重命名这些目录下的所有文件,并将数字(目录名)附加到文件名。
到目前为止,我写的是:
for %%* in (.) do set CurrDirName=%%~nx*
echo %CurrDirName%
for /r %%x in (*.txt) do ren "%%x" "%CurrDirName%_%%x"
有了这个,我就可以在一个目录中实现它。我不能让它递归。你能帮我解决这个问题。
答案 0 :(得分:0)
@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
FOR
循环的位置:
%%G
循环创建.txt
文件的静态列表(递归),%%g
循环获取每个特定文件的父文件夹。 rename
命令仅使用ECHO
显示以进行调试。要使其正常运行,请删除单词ECHO
(不早于调试)。
此外,我考虑检查特定文件是否已重命名...