将文件夹内的文件批量重命名为父文件夹名称
问题描述:
我有一个大的(aprox.150000)tif文件,它们都具有相同的文件名。他们是唯一的,因为他们所在的目录结构。将文件夹内的文件批量重命名为父文件夹名称
我想批量重命名tiff文件,使它们变得唯一,基于它们所在的目录structre。
有没有人有任何方法达到这个目标?
我正在使用Windows Server 2012,所以使用cmd脚本,批处理文件或windows GUI工具的解决方案将是完美的。
理想情况下,这是我想acheieve,但如果我必须有更多或所有的目录结构在最终文件名thsi仍然是非常非常有帮助。
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
答
这应该工作:
pushd C:\A_001\B_0002
for /d %%a in (*) do (
if exist "%%~a\0001.tif" ren "%%~a\0001.tif" "%%~a.tif"
)
popd
哪些应该做你想要什么。我已经测试过这个,它在我的电脑上工作正常。
答
我在我的F盘上做了一个类似的foldertree。
从文件夹 “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"
内启动commandprompt将导致:
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” 所有文件。
希望这会帮助吗?
答
@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"
)
的
可能重复([如何根据通过批处理脚本他的文件夹名称重命名文件] http://*.com/questions/14055495/how-to-rename-a-file-according-his-文件夹名称通过批处理脚本) – Lanting 2014-11-06 09:50:24
现在准备答案。同时你可以检查这个http://*.com/a/25675706/388389 – npocmaka 2014-11-06 09:52:20
冒号不应该在那里为测试案例2 ... – Monacraft 2014-11-06 10:01:35