我尝试创建一个批处理文件来自动重命名文件夹中包含的文件,从这个结构:A12345678.textornumbers.textornumbers.txt 到更简单的一个:A12345678.txt
我试过这样的事情:
@echo off
ECHO Renaming files
Pause
:begin
ECHO Renaming txt files
for /r %%x in (A*.*.*.txt) do (REN "%%x" A*.txt)
ECHO Renaming finished
:end
pause
done
它不返回任何错误,但它什么也不做......
编辑:
好的,可以通过其他方式看到问题:我想重命名剩余的前 9 个字符和扩展名的文件。
我在这里看到了一个类似的问题: Deleting characters from filename
我修改并调整到我的情况有这个:
@echo off
ECHO Renaming files
Pause
:begin
REM setlocal enabledelayedexpansion (the result is the same with and without this line)
set X=9
ECHO Renaming files
for /r %%f in (*.txt) do if %%f neq %~nx0 (
set "filename=%%~nf"
set "filename=!filename:~%X%,-%X%!"
ren "%%f" "!filename!%%~xf")
ECHO Done
ECHO Processing finished
:end
pause
done
但结果是这样的:
块引用!文件名!.txt
这是目录中的第一个图像,其他图像有错误(此类文件已存在)。
编辑2:
感谢我在互联网上找到的回复和其他信息,这是我的解决方案:删除文件名的最后一个字符,因为我想保留前 9 个字符:
@echo off
ECHO renaming files
ECHO.
Pause
:begin
set ext=QUB
set num=17
FOR /f "tokens=*" %%f in ('dir /b /a *.%ext%') do call :lab %%f
ECHO Done
pause
Exit
:lab
set original=
set original=%*
set newname=
call set newname=%%original:.%ext%=%%
call set newname=%%newname:~0,-%num%%%.%ext%
if "%newname%"==".%ext%" (goto :eof)
ren "%original%" "%newname%"
ECHO %newname%
goto :eof
这不是我的代码,而是我从其他人那里使用的解决方案(由 Carlitos.dll 提供)。我希望它可以帮助其他有类似问题的人。感谢您的想法和帮助!