如何使用批处理文件修剪多个文件名

如何使用批处理文件修剪多个文件名

我需要每天整理文件夹中的所有文件名,因此正在寻找批处理文件建议。任何帮助都非常感谢!!

文件名后面的数字每天都在变化......Windows 10,所有文件扩展名都是csv。

这里有一些例子:

                              what it's now --> what it needs to look like
                           ---------------------------------------------------
ECOM_IN_ITEMATTRIBUTE_BRAND_20221020_133719 --> ECOM_IN_ITEMATTRIBUTE_BRAND
ECOM_IN_LINESORDERMIA_20221021_075153       --> ECOM_IN_LINESORDERMIA
ECOM_IN_MASTERFILE_20221020_130710          --> ECOM_IN_MASTERFILE

答案1

您可能希望使用结合正则表达式 (RegEx) 的小型 PowerShell 脚本。无论文件扩展名是否不同,您都必须根据需要调整后面的部分。

ls | Rename-Item -NewName {$_ -replace '(_\d+_\d+)\.txt', '.txt' }

使用-WhatIf参数 onRename-Item检查重命名以避免错误。

ls | Rename-Item -NewName {$_ -replace '(_\d+_\d+)\.txt', '.txt' } -WhatIf

在此处输入图片描述

通过图形用户界面提供进一步的解决方案

批量重命名实用程序允许您根据极其灵活的标准轻松重命名文件和整个文件夹。

蚂蚁重命名器是另一个免费程序,它使用指定的设置可以更轻松地重命名大量文件和文件夹。它支持 Unicode 名称。

答案2

  • 为了, 你可以试试:
@echo off && cd /d "%~dp0"

for /f usebackq^tokens^=1*^delims^=2 %%i in =;(`2^>nul ^<con: dir /b /a:a "*_*_*.csv"
    `);= do set "_n=%%~ni%%~xj" && "%ComSpec%" /v /r "ren ".\%%~i2*%%~j" "!_n:_.=.!""

观察:如果批次与要重命名的文件不在同一文件夹中,请替换:

cd /d "%~dp0"
:: with full path :: 
cd /d "D:\the\full\path\of\the\folder\where\the\files\are"

答案3

我更喜欢使用批量重命名命令行

“D:\Program Files\Bulk Rename Utility\BRC64.exe”/removelastn:16

Processing Folder G:\HB\
Filename ECOM_IN_ITEMATTRIBUTE_BRAND_20221020_133719.txt would be renamed to ECOM_IN_ITEMATTRIBUTE_BRAND.txt
Filename ECOM_IN_LINESORDERMIA_20221021_075153.txt would be renamed to ECOM_IN_LINESORDERMIA.txt
Filename ECOM_IN_MASTERFILE_20221020_130710.txt would be renamed to ECOM_IN_MASTERFILE.txt

“D:\ Program Files \批量重命名实用程序\BRC64.exe”/removelastn:16 /执行

Processing Folder G:\HB\
Filename ECOM_IN_ITEMATTRIBUTE_BRAND_20221020_133719.txt renamed to ECOM_IN_ITEMATTRIBUTE_BRAND.txt
Filename ECOM_IN_LINESORDERMIA_20221021_075153.txt renamed to ECOM_IN_LINESORDERMIA.txt
Filename ECOM_IN_MASTERFILE_20221020_130710.txt renamed to ECOM_IN_MASTERFILE.txt

相关内容