在Windows中递归批量重命名(添加后缀/前缀)文件

时间:2017-02-08 11:03:39

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

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

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

表示例如:
 原文:FileName1.ext
        决赛:Suf_FileName1.ext

要执行此功能,请在线找到此命令

O(K)

但这会替换原始文件名中的初始字符 像
     原文:FileName1.ext
      决赛:Suf_Name.ext

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

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

先谢谢。

1 个答案:

答案 0 :(得分:1)

使用SET @sqlCommand = 'bcp "EXEC ' +@db + '.dbo.GetXmlDataKund" queryout "' + @filePath + @fileName + ' " -T -c -C65001 -C' EXEC master..xp_cmdshell @sqlCommand 命令迭代一组文件时,for可替换参数(样本中的for)包含对文件的引用。

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

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

%F

您的命令可能类似于

%~nxF
 ^^^^.... replaceable parameter
 ||+..... extension of the file referenced
 |+...... name of the file referenced
 +....... operator for modifier usage
  • note :命令中的for /R %F in (*) do echo ren "%F" "Suf_%~nxF" 只是一种调试习惯。在更改任何内容之前,首先显示以控制将要执行的命令。如果输出似乎正确,那么我们只需删除echo并再次运行命令。

请记住,如果要在批处理文件中使用该命令,则需要通过将它们加倍来转义echo可替换参数中的百分号。在批处理文件中,上一个命令将是

for