cmd批量重命名子文件夹/文件

时间:2012-04-24 07:20:45

标签: windows batch-file cmd

如何批量重命名文件夹A中的文件,其中包含子文件夹和文件名为filename_ex.doc的文件,并使它们看起来像filename.doc?

我一直试图这样做一段时间,这是史诗般的失败。请帮忙。

1 个答案:

答案 0 :(得分:3)

我认为您也想重命名子文件夹中的文件,这是您对Martin James的第2条评论方向存在问题的地方。我猜你用DIR / S选项尝试了这个代码。但你太近了:-)你只需要使用2个循环!

编辑 - 修正代码 输出看起来正确后,请删除ECHO以使其正常运行。

@echo off
for /r %%D in (.) do (
  pushd "%%~fD"
  for /f "tokens=1-3 delims=_." %%A in ('dir /b *_ex.ext 2^>nul') do echo ren "%%A_%%B.%%C" "%%A.%%C"
  popd
)

只要每个文件名除_中显示的内容之外没有任何._ex.ext,上述操作就会有效。路径中的字符不应该是任何问题,只需要关注文件名。

这是一个更强大的解决方案,可以使用任何文件名(unicode名称除外)。它也明显更快。它使用子字符串操作,您必须知道要从名称中删除的字符数。在您的示例中,它是3个字符。同样,一旦结果命令看起来正确,就删除ECHO。

@echo off
setlocal disableDelayedExpansion
for /f "delims=" %%F in ('dir /b /s *_ex.ext') do (
  set "old=%%F"
  set "new=%%~nF"
  setlocal enableDelayedExpansion
  echo ren "!old!" "!new:~0,-3!.ext"
  endlocal
)