0

我正在尝试做与此几乎相同的事情:如何使用 Windows 批处理增加文件夹名称?

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

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”,但不适用于“New Folder”。我尝试使用 ^ 和 " 的各种排列来转义空格,例如,

set "baseName=New^ Folder"
set "baseName=New" "Folder"
set "baseName=New""^ ""Folder"

等等,但是,我还没有让它工作。

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

4

1 回答 1

4

这在这里有效。

@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%"
于 2013-06-26T13:18:46.143 回答