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

标签 windows batch-file cmd

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

我已经尝试这样做一段时间了,但这是一次史诗般的失败。请帮忙。

最佳答案

我假设您也想重命名子文件夹中的文件,这就是您在对 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
)

关于windows - cmd 批量重命名子文件夹/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293450/

相关文章:

windows - 如何在动态 MFC 对话框中创建复选框?

Windows 批处理文件重定向输出

cmd - Windows cmd : how to pass an argument with a line break?

mysql - 使用命令行在Mysql中导入压缩文件

windows - 在 Batch 中显示变量的问题

windows - PowerShell Windows 许可证类型

windows - OpenEvent,getlasterror 返回 2

python-3.x - 有没有办法为Windows安装cython-bbox?

windows - 在批处理脚本中生成带有时间戳的唯一文件名

windows - 告诉我最后一次访问文件的时间的批处理脚本