DOS批处理 - 将子目录中的所有文件重命名为具有子目录名称前缀

时间:2012-07-10 15:18:48

标签: batch-file dos rename subdirectory

我基本上有这样的设置:

C:\Upload\A
C:\Upload\B
C:\Upload\C
C:\Upload\D
C:\Upload\E

ABCDE始终不同(产品ID)并且总是不同的金额(赢得了永远不会有5个子目录。这些子目录中的每一个包含24个以数字01-24编号的图像。

我需要创建一个查看Upload目录的批处理文件,获取每个子目录的名称,并将该名称附加到该子目录中包含的每个图像文件的开头。

因此,C:\Upload\A\01.jpg将成为C:\Upload\A\A-O1.jpg以及每个子目录中的其他23个图像。

批处理文件需要对Upload目录中的每个子目录执行相同的操作。

这对我来说听起来非常复杂,我已经开始尝试写这篇文章,我在这篇文章中还没有任何值得分享的内容。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

这将重命名“C:\ Upload”

子目录中的文件
@echo off
for /d %%D in (C:\Upload\*) do (
  for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F"
  )
)

我添加了额外的代码以防止重命名同一个文件两次。您应该能够安全地多次运行脚本。

如果要在每个子目录树中连续重命名文件,则需要对代码稍作更改。

@echo off
for /d /r "C:\Utils" %%D in (*) do (
  for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F"
  )
)