求一个批处理bat命令,将一个文件夹下的文件名统一做加减一个数字的更改

一个文件夹下的文件名全部是纯数字命名的,比如15.jpg、16.jpg、17.jpg等等,要求这些文件名统一加减一个数字,假设统一减去2,更改后的文件名则是13.jpg、14.jpg、15.jpg。希望尽量简短些,附上注释

@echo off
setlocal enabledelayedexpansion
::假设这个文件夹为E:\test,实际请自行修改,列出里面的文件
for /f "delims=" %%a in ('dir /b "E:\test\*.*"') do (
::获取文件名
set name=%%~na
::-2表示统一减去2,加减一个数字请自行修改
set /a name=!name!-2
::建立临时文件存放文件夹E:\test\temp,实际请自行修改
if not exist "E:\test\temp\" (md "E:\test\temp\")
::复制文件并重命名
copy "%%a" "E:\test\temp\!name!%%~xa"
)
pause

注:因为在原文件夹更名会出现重名的情况(如15.jpg和17.jpg,如果17.jpg先更名就会有两个15.jpg),所以先把更名后的文件复制到一个临时文件夹

您的采纳是我们的动力和鼓励,请及时点击【采纳回答】

追答

请及时采纳回答

请及时采纳回答

追问

多谢你的详细回答,不过出现了这样的情况:系统找不到指定的文件

追答

更正代码

@echo off
setlocal enabledelayedexpansion
::假设这个文件夹为E:\test,实际请自行修改,列出里面的文件
set "lj=E:\test"
for /f "delims=" %%a in ('dir /b "%lj%\*.*"') do (
::获取文件名
set "name=%%~na"
::-2表示统一减去2,加减一个数字请自行修改
set /a name=!name!-2
::建立临时文件存放文件夹E:\test\temp,实际请自行修改
if not exist "%lj%\temp\" (md "%lj%\temp\")
::复制文件并重命名
copy "%lj%\%%a" "%lj%\temp\!name!%%~xa"
)
pause

请及时采纳回答

温馨提示:答案为网友推荐,仅供参考
相似回答