如何批量重命名文件,将字符移到末尾

如何批量重命名文件,将字符移到末尾

以前我曾使用批处理文件成功重命名文件,我认为这是可能的,但在这种情况下我无法让它发挥作用。

我有以下文件,我想重命名它们以便正确排序:

  • IMG_9963- 不用找了
  • IMG_E9963应重命名为IMG_9963E

因此,基本上,如果有 E,则需要将其从当前位置移动到文件名末尾。文件名的其余部分应保持不变。

可能有数千个文件需要运行。

更复杂的是,文件名可能已经加了前缀,因此 E 可能不总是在同一个位置。不过 E 总是在数字之前,并且总是 E。因此示例如下:

WorkIMG_9963
WorkIMG_E9963
AIMG_9963
AIMG_E9963

我尝试过很多不同的方法,但编码不是我的强项。我以前只给文件名加过前缀等。这是我尝试过的方法:

setlocal enabledelayedexpansion
for %%j in (*) do (
set old_filename=%%j
set "new_filenameA=!old_filename:E=!"
set "new_filenameB=!new_filenameA!E"
ren "!old_filename!" "!new_filenameB!"
) 

我如何才能自动执行此类重命名任务?

答案1

好吧,由于这个话题现在已经重新开放,所以我将其添加为答案:

@echo off

setLocal EnableDelayedExpansion

if exist "%~1" (if not exist "%~1\" exit) else (exit)
pushd "%~1"
for /f "delims=" %%a in ('dir /b "%~1"') do (
                                             set Name=%%~na
                                             set Name=!Name:E=!
                                             set "NewName=!Name!E%%~xa"
                                             if not "%%~na"=="!Name!" ren "%%a" "!NewName!"
                                            )
popd

相关内容