将文件夹名称递归附加到 Windows 批处理文件中的文件
Recursively append folder name to the files in Windows batch file
我想将我的文件夹名称附加到子文件夹内所有可用的 .txt 文件。下面是 file/directory 结构。我需要在 Windows BATCH 脚本中实现这一点。
C:\Source\Source1\a.txt C:\Source\Source1\b.txt
C:\Source\Source1\a.txt C:\Source\Source1\b.txt
C:\Source\Source2\a.txt C:\Source\Source2\b.txt
以上文件应重命名如下:
C:\Source\Source1_a.txt C:\Source\Source1_b.txt
C:\Source\Source1_a.txt C:\Source\Source1_b.txt
C:\Source\Source2_a.txt C:\Source\Source2_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
其中 FOR
循环是:
- 外部
%%G
循环创建 静态列表 .txt
个文件(递归),并且
- 内部
%%g
循环获取每个特定文件的父文件夹。
rename
命令仅使用 ECHO
显示,用于调试目的。要使其可操作,请删除单词 ECHO
(刚调试完)。
此外,我会考虑检查特定文件是否已重命名...
我想将我的文件夹名称附加到子文件夹内所有可用的 .txt 文件。下面是 file/directory 结构。我需要在 Windows BATCH 脚本中实现这一点。
C:\Source\Source1\a.txt C:\Source\Source1\b.txt
C:\Source\Source1\a.txt C:\Source\Source1\b.txt
C:\Source\Source2\a.txt C:\Source\Source2\b.txt
以上文件应重命名如下:
C:\Source\Source1_a.txt C:\Source\Source1_b.txt
C:\Source\Source1_a.txt C:\Source\Source1_b.txt
C:\Source\Source2_a.txt C:\Source\Source2_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
其中 FOR
循环是:
- 外部
%%G
循环创建 静态列表.txt
个文件(递归),并且 - 内部
%%g
循环获取每个特定文件的父文件夹。
rename
命令仅使用 ECHO
显示,用于调试目的。要使其可操作,请删除单词 ECHO
(刚调试完)。
此外,我会考虑检查特定文件是否已重命名...