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

How to rename files, removing all characters between certain values

我有一个包含 15.000 个文档的列表,我需要从其中删除名称中的特定文本。

名称结构总是:[xxx]_(xxx)_xxx.extension

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

我只找到了替换某些文本片段或删除固定文本片段的方法。感谢任何帮助或指导。

这是 for 的工作:

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

工作原理:

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

如果你想重命名它们(例如),而不仅仅是 echoing,你可以这样做:ren "%%a_%%b_%%c" "%%a_%%c"

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

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

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

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

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

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

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

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

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

其中 "length-N" 中的 N 是您要 trim 从最后一个开始的字符数,不包括扩展文件。

示例:

我在 Windows 10 备份后恢复了我的文件,每个文件都出现了一些额外的字符,显示了我备份的日期和时间。

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

所以我必须在每个文件名中 trim 26 个字符。那么 N = 26

1) 我打开 PowerShell 并导航到我将在其中执行脚本的文件夹。 2) 我执行以下脚本

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

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