解决方案

解决方案

我正在重命名多个文件_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"
)

怎么运行的

  1. 列出所有匹配的文件*_2.*
  2. 通过删除最后 2 个字符来删除_2每个文件名的后缀 ( )。%%~nG
  3. 将原始扩展名 ( %%~xG) 附加到新名称。
  4. 重命名文件。

测试用例

__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 帮助。

相关内容