我有一个大的(aprox.150,000)个tif文件,它们都有相同的文件名。它们只是唯一的,因为它们保存在目录结构中。
我想批量重命名tiff文件,使它们变得独一无二,基于它们所在的目录结构。
有没有人有这种方法来实现这个目标?
我正在使用Windows Server 2012,因此使用cmd脚本,批处理文件或Windows GUI工具的解决方案将是完美的。
理想情况下,这就是我想要实现的目标,但如果我必须在最终文件名中包含更多或全部目录结构,那么这仍然会非常非常有用。
C:\A_001\B_0001\ABC\0001.tif -> ABC.tif
C:\A_001\B_0001\JKL\0001.tif -> JKL.tif
C:\A_001\B_0001\XYZ\0001.tif -> XYZ.tif
C:\A_001\B_0002\123\0001.tif -> 123.tif
C:\A_001\B_0002\456\0001.tif -> 456.tif
C:\A_001\B_0002\789\0001.tif -> 789.tif
答案 0 :(得分:1)
这应该有效:
pushd C:\A_001\B_0002
for /d %%a in (*) do (
if exist "%%~a\0001.tif" ren "%%~a\0001.tif" "%%~a.tif"
)
popd
哪个应该做你想要的。我已对此进行了测试,它在我的计算机上运行良好。
答案 1 :(得分:0)
我在我的驱动器上做了一个类似的foldertree F:。
从文件夹“A_001”
中启动命令提示符FOR /F "TOKENS=3,4,5* DELIMS=\" %A IN ('DIR "%CD%\*.tif" /s /b /a:-d') DO MOVE "%CD%\%A\%B\%C" "%CD%\%A_%B%~xC"
将导致:
MOVE "F:\A_001\B_0001\123\0001.tif" "F:\A_001\B_0001_123.tif"
MOVE "F:\A_001\B_0001\ABC\0001.tif" "F:\A_001\B_0001_ABC.tif"
MOVE "F:\A_001\B_0002\123\0001.tif" "F:\A_001\B_0002_123.tif"
MOVE "F:\A_001\B_0002\ABC\0001.tif" "F:\A_001\B_0002_ABC.tif"
因此,您将把所有文件都放在“A_001”文件夹中。
希望这有帮助吗?
答案 2 :(得分:0)
@echo off
for /f "delims=" %%F in ('dir /b /s /a-d "C:\A_001\0001.tif"') do (
for %%D in ("%%~dpF.") do ren "%%F" "%%~nD%%~xF" || echo unable to rename "%%F"
)