If statement 在++;Windows批处理文件中的FOR循环?

If statement 在++;Windows批处理文件中的FOR循环?,if-statement,batch-file,for-loop,batch-rename,If Statement,Batch File,For Loop,Batch Rename,我在网上搜索,找不到我要找的确切代码。。。我发现了一些非常相似的东西,但没有使它们发挥作用。以下是我想要的大致想法: int i = 1; FOR (i; i < 9999; i++) IF EXIST filename.log THEN REN filename%i%.log ELSE IF EXIST filename%i%.log THEN REN filename%(i+1)%.log inti=1; 对于(i;i

我在网上搜索,找不到我要找的确切代码。。。我发现了一些非常相似的东西,但没有使它们发挥作用。以下是我想要的大致想法:

int i = 1;
FOR (i; i < 9999; i++)
IF EXIST filename.log THEN
REN filename%i%.log
ELSE IF EXIST filename%i%.log THEN
REN filename%(i+1)%.log
inti=1;
对于(i;i<9999;i++)
如果存在filename.log,则
文件名%i%.log
否则,如果存在文件名%i%。则记录
REN文件名%(i+1)%。日志
基本上,我想检查文件名是否存在,如果存在,将其重命名为filename0001——从那时起,每次批处理运行时,如果找到文件名#####,它会将其重命名为一。因此,当然,在第一次运行该程序之后,当它发现文件名存在时,它会将其重命名为filename0002,依此类推

谢谢

根据评论进行编辑。还添加了测试以确保debug.log存在。不想不必要地重命名文件

第一个解决方案的最新日志始终为debug.log,下一个最新日志为debug0001.log,下一个日志为debug0002.log,等等。最早的日志的编号将最高

@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
  'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
  set "name=%%~nF"
  set /a "n=10000!name:*%base%=! %% 10000 + 1"
  ren "%%F" "%base%!n!.log"
)
要使最旧的日志具有0001,而最新的日志具有最高的数字,则需要进行一些小的更改。只需要一个重命名

@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
  'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
  set "name=%%~nF"
  set /a "n=10000!name:*%base%=! %% 10000 + 1"
  ren "%base%.log" "%base%!n!.log"
  goto :break
)
:break
根据评论编辑。还添加了测试以确保debug.log存在。不想不必要地重命名文件

第一个解决方案的最新日志始终为debug.log,下一个最新日志为debug0001.log,下一个日志为debug0002.log,等等。最早的日志的编号将最高

@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
  'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
  set "name=%%~nF"
  set /a "n=10000!name:*%base%=! %% 10000 + 1"
  ren "%%F" "%base%!n!.log"
)
要使最旧的日志具有0001,而最新的日志具有最高的数字,则需要进行一些小的更改。只需要一个重命名

@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
  'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
  set "name=%%~nF"
  set /a "n=10000!name:*%base%=! %% 10000 + 1"
  ren "%base%.log" "%base%!n!.log"
  goto :break
)
:break

噢,糟了,对不起。正在重命名的日志文件将没有编号。所以它总是“debug.log”,我将对它进行重命名(有效地添加数字)。因此,第一次,debug.log重命名为debug001(或其他任何).log,下一次debug.log重命名为debug002.log,等等@user1502648-好的,我认为第二组代码符合您的要求。噢,见鬼,对不起。正在重命名的日志文件将没有编号。所以它总是“debug.log”,我将对它进行重命名(有效地添加数字)。因此,第一次debug.log重命名为debug001(或其他任何).log,下一次debug.log重命名为debug002.log,等等@user1502648-好的,我认为第二组代码符合您的要求。