假设以下目录结构
my_script.bat
Dir1
File1.txt
Dir2
Dir3
File1.txt
我想要展平它,以便我只有一个目录,其中每个文件名都以当前目录(我的批处理文件所在的位置)下面的所有父目录作为前缀。
如此扁平化以上列表会产生类似
的内容Dir1-File1.txt
Dir2-Dir3-File1.txt
或者只是某种方式来识别它来自哪个文件夹,不一定要用连字符。
可以使用Windows批处理文件吗?或者可能已经有了它的命令?
答案 0 :(得分:5)
我必须赞扬Jacob Seleznev的原始想法,但这里的解决方案还包括新文件名中的路径:
Setlocal EnableDelayedExpansion
for /r %%F in (*) do (
set _name=%%~fF
rem Change the path to a relative path by replacing the current folder with ""
set _name=!_name:%cd%\=!
rem Replace slashes with hyphens
set _name=!_name:\=-!
copy "%%F" ".\!_name!"
)
输出:
Dir1-File1.txt
Dir2-Dir3-File1.txt
答案 1 :(得分:2)
for /r %F in (*) do set name=%~pfF
set name=%name:\=-%
echo %name%