如何重命名文件,删除某些值之间的所有字符

时间:2015-08-12 10:14:09

标签: batch-file cmd batch-rename

我有一份15.000文件的清单,我需要从名称中删除某段文字。

名称结构始终为:[xxx]_(xxx)_xxx.extension

我正在尝试删除文件名的(xxx)_部分。 xxx的长度是可变的。

我只找到了替换某些文本或删除固定文本的方法。任何帮助或指南都表示赞赏。

3 个答案:

答案 0 :(得分:2)

这是for的工作:

for /f "tokens=1,2,* delims=_" %%a in ('dir /b "[*]_(*)_*.extension"') do @echo %%a_%%c  [removed "%%b"]

工作原理:

它根据分隔符(_此处)将您的文件名分解为三个部分:firstpart_secondpart_thirdpart,然后通过将第一个和第三个部分组合在一起来重新组装它。

如果您想重命名它们(例如),而不仅仅是echo,您可以:ren "%%a_%%b_%%c" "%%a_%%c"

答案 1 :(得分:2)

我会使用JREN.BAT - a regular expression renaming utility。 JREN.BAT是纯脚本(混合JScript /批处理),可以在XP以后的任何Windows机器上本机运行。

假设您在PATH中的文件夹中有JREN.BAT,那么您只需要命令行中的以下命令:

jren "^(\[.*?\]_)\(.*?\)_" "$1"

该命令在当前目录中查找以[*]_(*)_开头的文件名,并删除(*)_部分。

如果将命令放在批处理脚本中,请使用CALL JREN

您可以添加/P选项以指定与当前目录不同的路径,并添加/S选项以迭代所有子目录。

您可以使用jren /??访问大量文档。按<Enter>可一次推进一行帮助,或<space>一次推进一个屏幕页面。或者使用jren /?立即将整个帮助转储到屏幕上。

答案 2 :(得分:0)

如果要修剪多个文件名,则可以使用PowerShell尝试。 1.导航到要重命名的文件所在的目录。 2.执行以下命令。

dir | Rename-Item -NewName {$_.name.substring(0,$_.BaseName.length-N) + $_.Extension}

其中“ length-N”中的N是要从最后一个字符开始修剪的字符数,不计算扩展文件。

示例:

在Windows 10中进行备份后,我恢复了文件,并且每个文档都显示了一些额外的字符,显示了进行备份的日期和时间。

FileName(2020_02_13 12_33_22 UTC).extension ,我需要修剪括号之间的所有内容并采用 FileName.extension

所以我必须在每个文件名中修剪26个字符。然后N = 26

1)我打开PowerShell,然后导航到执行脚本的文件夹。 2)我执行以下脚本

dir | Rename-Item -NewName {$_.name.substring(0,$_.BaseName.length-26) + $_.Extension}

请小心使用此命令,因为除了修剪给定数量的字符外,它不会遵循任何参数。