3

如何批量重命名文件夹 A 中的文件,该文件夹包含具有此格式名称 filename_ex.doc 的子文件夹和文件,并使它们看起来像 filename.doc?

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

4

1 回答 1

3

我想您也想重命名子文件夹中的文件,这是您对 Martin James 的第二条评论中的方向有问题的地方。我猜你用 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
)
于 2012-04-24T11:11:30.493 回答