我想从任何地方开始以数字递增的顺序重命名大量文件。但是当我重命名多个文件时,它给我留下了括号。例如,我将文件重命名为 abc_.jpeg 它会导致 abc_(1).jpeg、abc_(2).jpeg 等等。
我尝试使用命令提示符重命名
ren abc_(*).jpeg abc_*.jpeg
不起作用。可能是因为括号
ren abc_"("*")".jpeg abc_*.jpeg
重命名文件,但产生与以前相同的文件名。我只是想以某种方式删除括号。
要删除括号,您必须进行一些字符串操作。我已经编写了一个批处理文件来执行此操作(另存为.bat
)
cd C:\folder
setlocal enabledelayedexpansion
for %%a in (abc_*.jpeg) do (
set f=%%a
set f=!f:^(=!
set f=!f:^)=!
ren "%%a" "!f!"
)
我不认为你可以从命令行轻松地在一行中做到这一点,它可能是可能的,但它不会很漂亮。如果你能帮助它使用这个批处理文件来删除括号。
在文件资源管理器窗口中,选择所有文件,右键单击并选择重命名。Windows 将选择起始数字作为圆括号之间提供的数字,因此使用比所需位数多 1 位的数字命名文件。
示例:我们想要模式“test_xxx”。使用文件资源管理器,将文件重命名为“tes(1000)”。您的文件现在将命名为 ["tes(1000)"、"tes(1001)"、"tes(1002)" 等..]。按住 SHIFT 并右键单击文件资源管理器的打开区域,然后选择“在此处打开命令窗口”。发出以下命令:
ren *.* test_???.*
这会将所有文件重命名为正确的格式 [“test_000”、“test_001”、“test_002”等。]。
聚会有点晚了,但这里是删除括号和自动创建的空白空间的组合。此代码通过将 .bat 文件放在包含您要修改的所有文件的文件夹中来工作。
将代码复制并粘贴到记事本中并将其另存为sequentialFileNameCleaner.bat
您的文件名必须与第一行中写入的文件名相同。话虽如此,如果要更改文件名,可以手动更新第一行。
:sequentialFileNameCleaner [/R] [FolderPath]
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
set f=%%a
set f=!f:^(=!
set f=!f:^)=!
ren "%%a" "!f!"
)
@echo off
setlocal disableDelayedExpansion
if /i "%~1"=="/R" (
set "forOption=%~1 %2"
set "inPath="
) else (
set "forOption="
if "%~1" neq "" (set "inPath=%~1\") else set "inPath="
)
for %forOption% %%F in ("%inPath%* *") do (
if /i "%~f0" neq "%%~fF" (
set "folder=%%~dpF"
set "file=%%~nxF"
setlocal enableDelayedExpansion
echo ren "!folder!!file!" "!file: =!"
ren "!folder!!file!" "!file: =!"
endlocal
)
)
默认情况下,此代码只会定位 .jpg 文件。在第 3 行,更改(*.jpg)
to(*.png)
或 to(*.mp4)
或任何您想要的扩展名将使代码兼容。
当我们需要将包含特定括号的文件名列表传递给脚本时,问题就出现了。以下确实适用于此。在此示例中,我们将括号更改为下划线。
SET fileList=%*
SET delim1=aaaaaaaaaaaaa
SET delim2=zzzzzzzzzzzzz
setlocal enabledelayedexpansion
SET fileList=!fileList:^(=%delim1%!
SET fileList=!fileList:^)=%delim2%!
FOR %%f in (%fileList%) DO (
SET f1=%%~f
SET f1=!f1:%delim1%=^(!
SET f1=!f1:%delim2%=^)!
SET f2=%%f
SET f2=!f2:%delim1%=_!
SET f2=!f2:%delim2%=_!
FOR %%i IN (!f2!) DO RENAME "!f1!" "%%~nxi"
)