gpt4 book ai didi

windows - 如何在批处理文件中生成输出文件的自动编号?

转载 作者:可可西里 更新时间:2023-11-01 11:49:29 24 4
gpt4 key购买 nike

我有一堆文件说,

  • xxx111.txt
  • xxx112.txt
  • xxx113.txt

我想删除所有文件名的最后 3 个字符,我正在使用这个脚本


@echo off
setlocal enabledelayedexpansion
set X=3
for %%f in (*) do if %%f neq %~nx0 (
set "filename=%%~nf"
set "filename=!filename:~,-%X%!"
ren "%%f" "!filename!%%~xf"
)
popd
pause

当输出文件名不同时,这可以完美运行。但是,在上述情况下,所有文件都将输出为 xxx.txt 并且脚本向我抛出错误

"A duplicate file name exists, or the file cannot be found".

有什么方法可以调整它,以便重命名重复文件并编号为 1,2,3...?

很遗憾,我无法安装任何其他软件。

最佳答案

@echo off
setlocal EnableDelayedExpansion

set X=3
for /F "delims=" %%f in ('dir /A:-D /B') do if "%%f" neq "%~NX0" (
set "filename=%%~Nf"
set "filename=!filename:~,-%X%!"
if exist "!filename!%%~Xf" call :getNewName "%%~Xf"
ren "%%f" "!filename!%%~Xf"
)
popd
pause
goto :EOF


:getNewName ext
set i=0
:nextNum
set /A i+=1
if exist "%filename%%i%%~1" goto nextNum
set "filename=%filename%%i%"
exit /B

当重命名文件时,你不应该使用普通的 for %%f 命令。根据新名称在原始名称列表中的位置,它们可能会由 for %%f 进行第二次处理。始终使用 for/F 进行重命名。

关于windows - 如何在批处理文件中生成输出文件的自动编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com