【发布时间】:2020-03-25 01:11:54
【问题描述】:
我想递归地将文件夹(和父文件夹)名称附加到该文件夹包含的每个 *.txt 文件。之后,我想将所有文件移动到基本文件夹并删除所有文件夹。我需要在 Windows BATCH 脚本中实现这一点。例如:
\BaseFolder\A01\B01\EX1.TXT
\BaseFolder\C01\EX2.TXT
\BaseFolder\EX3.TXT
收件人:
\BaseFolder\A01-B01-EX1.TXT
\BaseFolder\C01-EX2.TXT
\BaseFolder\EX3.TXT
感谢 JosefZ,我找到了这个解决方案:
Recursively append folder name to the files in Windows batch file
@echo OFF
SETLOCAL EnableExtensions
for /F "delims=" %%G in ('dir /B /S "C:\Source\*.txt"') do (
for %%g in ("%%~dpG.") do rename "%%~fG" "%%~nxg_%%~nxG"
)
pause
FOR 循环在哪里:
- 外部 %%G 循环创建 .txt 文件的静态列表(递归),并且
- 内部 %%g 循环获取每个特定文件的父文件夹。
但这仅解决了我的部分目标。有人可以帮忙吗?
【问题讨论】:
-
您链接的解决方案只能处理一个子目录级别,它不会移动任何文件,只是重命名它们......
标签: windows batch-file recursion cmd scripting