我正在重命名多个文件_2。到。 我想删除“_2”后缀
我的第一个解决方法是尝试
ren *_2.* *.*
但这不起作用。非常感谢帮助。
答案1
解决方案
您可以使用这个批处理脚本:
@echo off
setlocal enabledelayedexpansion
for /r %%G in (*_2.*) do (
set new=%%~nG
set new=!new:~0,-2!
ren "%%~G" "!new!%%~xG"
)
怎么运行的
- 列出所有匹配的文件
*_2.*
。 - 通过删除最后 2 个字符来删除
_2
每个文件名的后缀 ( )。%%~nG
- 将原始扩展名 (
%%~xG
) 附加到新名称。 - 重命名文件。
测试用例
__2.bin --> _.bin
abc_def_2.txt --> abc_def.txt
2014_02_23_2.log --> 2014_02_23.log
进一步阅读
答案2
您可以尝试将其作为一个小的 .cmd :
@echo off
setlocal enabledelayedexpansion
for %%a in (*_2.*) do (
set fnm=%%a
echo ren !fnm! !fnm:_2.=.!
)
哪个似乎按照您的期望进行操作(如果测试运行满意,则删除回声)。
_2.
如果文件名中有多个,我只是看到一个可能的问题
编辑:根据建议替换了不完整的提案
答案3
以下是如何在 PowerShell 中执行此操作(它是一行代码,因此请确保向右滚动):
gci PATH\TO\YOUR\FOLDER\ | ? {!$_.PSIsContainer -and $_.BaseName.EndsWith("_2")} | ren -NewName {("{0}{1}" -f $_.BaseName.Substring(0, $_.BaseName.Length-2), $_.Extension)}
气相色谱是 Get-ChildItem 的别名 - 在此处输入文件夹的路径。如果您有子文件夹,则添加递归路径之后
?是 Where-Object 的别名 - 在这里我们循环遍历项目并检查它不是文件夹并且其名称以“_2”结尾(不包括文件扩展名)。
任- Rename-Item - 最后我们重命名通过 Where-Object 过滤器的文件。使用 Substring 我们只需截断文件名的最后两个字符。
答案4
这是使用以下命令执行此操作JP Software 的 Take Command,命令解释器,其REN
命令支持正则表达式:
ren ::(.*)_2\.(.*) ::\1.\2
进一步阅读
- JP 软件。任. 采取命令/TCC 帮助。