使用批处理文件增加文件版本号

时间:2013-06-26 12:32:01

标签: windows batch-file

我正在尝试做一些几乎与此相同的事情:How do I increment a folder name using Windows batch?

基本上,我想创建一个批处理文件来扫描目录,确定最高版本号,然后按顺序创建下一个版本号。因此,如果目录包含:

New folder V1.0
New folder V1.1
New folder V1.3

我希望批处理文件添加一个新文件夹V1.4。应该可行。问题是我发现的脚本:

@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%"

不适用于IE名称中包含空格的文件夹,它与'New_Folder'配合使用,但不适用于'新建文件夹'。我试过用^和“的各种排列来逃避空间,例如,

set "baseName=New^ Folder"
set "baseName=New" "Folder"
set "baseName=New""^ ""Folder"
然而,等等,我还没有让它发挥作用。

我知道我可以通过更改我的文件名来使用下划线来解决问题,但此时,我想知道为什么它不起作用以及如何修复它。 / p>

1 个答案:

答案 0 :(得分:3)

这可以在这里工作。

@echo off
setlocal enableDelayedExpansion
set "baseName=New Folder V1."
set "n=0"
for /f "delims=" %%F in (
  '2^>nul dir /b /ad "%baseName%*"^|findstr /xri /c:"%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%"
相关问题