批量将文件夹中的文件重命名为父文件夹名称

时间:2014-11-06 09:39:31

标签: batch-file directory batch-rename

我有一个大的(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

3 个答案:

答案 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"
)