批量文件增量文件夹编号

时间:2013-08-19 23:14:25

标签: batch-file

我正在尝试创建一个创建文件夹1.2.0.1,1.2.0.2,1.2.0.3等的批处理文件。 我从前一个问题中得到了这个代码,它几乎可以满足我的需求:

@echo off
setlocal enableDelayedExpansion
set "baseName=New_Folder"
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%"

所以我尝试它的方式是有两个变量,一个保持前三个数字2.4.0而另一个保持第四个。

set version=1.2.0
cd C:\Users\Build
set "lastFolder=0"
for /f "delims=" %%F in (
  '2^>nul dir /b /ad "%version%*."^|findstr /xri "%version%[0-9]*"'
) do (
  set "name=%%F"
  set "name=!name:*%version%=!"
  if !name! gtr !lastFolder! set "lastFolder=!name!"
)
set /a nextFolder=lastFolder+1
md "%version%.%nextFolder%"

但这不起作用,因为它只创建第一个文件夹,而不是后面的文件夹。任何人都可以帮我确定问题吗?感谢

2 个答案:

答案 0 :(得分:1)

如果文件夹存在与否,这将创建文件夹。

@echo off
for /L %%a in (1,1,255) do MD "1.2.0.%%a" 2>nul

这应该只创建系列中的下一个文件夹:

@echo off
cd C:\Users\Build
for /L %%a in (1,1,20000000) do if not exist "1.2.0.%%a\" MD "1.2.0.%%a" & goto :done
:done

这是您现在可以使用的代码 - 并且它在合理范围内与上面的代码完全相同。 200万个文件夹似乎是一个公平的数字,即使它需要几秒钟。 :)

@echo off
setlocal enabledelayedexpansion
set version=1.2.0.
cd C:\Users\Build
set "lastFolder=0"
for /f "delims=" %%F in (
  '2^>nul dir /b /ad "%version%*."^|findstr /xri "%version%[0-9]*"'
) do (
  set "name=%%F"
  set "name=!name:*%version%=!"
  if !name! gtr !lastFolder! set "lastFolder=!name!"
)
set /a nextFolder=lastFolder+1
md "%version%%nextFolder%"
pause

答案 1 :(得分:0)

缺少!.未正确处理:

...
'2^>nul dir /b /ad "%version%.*"^|findstr /xri "%version%.[0-9]*"'
...
set "name=!name:*%version%.=!"
...
set /a nextFolder=!lastFolder!+1
...