我有一份15.000文件的清单,我需要从名称中删除某段文字。
名称结构始终为:[xxx]_(xxx)_xxx.extension
我正在尝试删除文件名的(xxx)_
部分。 xxx的长度是可变的。
我只找到了替换某些文本或删除固定文本的方法。任何帮助或指南都表示赞赏。
答案 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}
请小心使用此命令,因为除了修剪给定数量的字符外,它不会遵循任何参数。