如何增加文件夹名称

时间:2016-06-24 19:23:00

标签: windows batch-file

我有一个批处理文件,用于创建名为TempIOFile的文件夹。在后续运行中,它应该识别出TempIOFile文件夹存在并创建该文件夹的递增版本(TempIOFile1,TempIOFile2等)。

我的代码可以递增文件:

set "baseName=TempIOFile"
set "n=0"
for /f "delims=" %%F in (
  '2^>nul dir /b /ad "%baseName%*."^|findstr /xri "%baseName%[0-9]*"'
) do (
  set "name=%%F"
  set "name=!name:*%baseName%=!"
  if !name! gtr !n! set "n=!name!"
)
set /a n+=1
md "%baseName%%n%"

但是,当我尝试使用IF EXIST语句时,我收到错误:文件名,目录名或卷标语法不正确。

IF EXIST %userprofile%\desktop\TempIOFile (
set "baseName=TempIOFile"
set "n=0"
for /f "delims=" %%F in (
  '2^>nul dir /b /ad "%baseName%*."^|findstr /xri "%baseName%[0-9]*"'
) do (
  set "name=%%F"
  set "name=!name:*%baseName%=!"
  if !name! gtr !n! set "n=!name!"
)
set /a n+=1
md "%baseName%%n%"
) ELSE (
MKDIR %userprofile%\desktop\TempIOFile

我不确定为什么这不起作用。 TempIOFile已创建,但在后续运行中,增量版本不会。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

应该就这么简单。除非我不理解你的问题。

 @echo off

 set "Num="
 :loop
 If EXIST "%userprofile%\desktop\TempIOFile%Num%\" (
    set /A Num+=1
    goto loop
 )

 md "%userprofile%\desktop\TempIOFile%Num%\"

或者这个。

@echo off
set "Num="
:loop
(md "%userprofile%\desktop\TempIOFile%Num%\" > nul 2>&1) || (set /A Num+=1 & goto loop)