【问题标题】:Mass Renaming (Adding Suffix/Prefix) of files recursively in Windows在 Windows 中递归地批量重命名文件(添加后缀/前缀)
【发布时间】:2017-02-08 11:03:39
【问题描述】:

我有一个包含许多子文件夹的文件夹,这些子文件夹还有更多子文件夹。每个文件夹都有许多文件。

我想通过添加一些后缀来重命名所有文件

例如:
原文:FileName1.ext
最终:Suf_FileName1.ext

要执行这个功能,在网上找到这个命令

 `FOR /R %x IN (*) DO ren "%x" Suf_*`

但这会替换原始文件名中的初始字符 喜欢
原文:FileName1.ext
最终:Suf_Name.ext

(请注意它已删除初始文件名中的初始字符)

请在上述命令中提出更改/修改建议, 或其他命令来执行该功能。

提前致谢。

【问题讨论】:

  • 这里有几个ways
  • 基于以下答案FOR /R %x IN (*) DO ren "%x" "Suf_%~nxx"

标签: windows batch-file recursion command-line-interface file-rename


【解决方案1】:

当您使用for 命令迭代一组文件时,for 可替换参数(在您的示例中为%x)包含对该文件的引用。

当你在do子句包含的命令中使用%x时,这个参数被替换为正在处理的文件的信息,默认是文件的名称和扩展名(使用简单的for时)或具有完整路径的文件(使用递归 for /R 时),但您可以决定和更改要使用的信息。 replaceable 参数允许使用一些修饰符(执行for /?可以看到完整列表)

在您的情况下,对于您的重命名掩码,您需要所引用文件的名称和扩展名(我已将您的 %x 更改为 %F,因此语法更清晰)

%~nxF
 ^^^^.... replaceable parameter
 ||+..... extension of the file referenced
 |+...... name of the file referenced
 +....... operator for modifier usage

您的命令可能类似于

for /R %F in (*) do echo ren "%F" "Suf_%~nxF"
  • 注意:命令中的echo 只是一个调试习惯。在更改任何内容之前,首先显示控制台将执行的命令。如果输出看起来正确,那么我们只需删除 echo 并再次运行命令。

请记住,如果您想在批处理文件中使用该命令,您需要通过将for 可替换参数中的百分号加倍来​​转义它们。在批处理文件中,前面的命令将是

for /R %%F in (*) do echo ren "%%F" "Suf_%%~nxF"

【讨论】:

  • 非常感谢兄弟。 !!
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2014-01-19
  • 2011-06-14
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多