假设New Folder
在我当前的目录路径中。
bat文件正在尝试在同一路径中创建另一个New Folder
。
如何在创建时自动将第二个文件夹重命名为New Folder1
?
答案 0 :(得分:0)
您可以使用if exist
if exist %foldername% set foldername=%foldername%1
通过简单的循环可以使这更加健壮。
虽然,如果您有多个具有相同名称的文件夹,它最终会看起来像'New Folder', 'New Folder1', 'New Folder11'
。很容易绕过一个单独的数字变量。
答案 1 :(得分:0)
一步一步的文件。根据需要进行调整。
@echo off
setlocal enableextensions
rem How to search and name new folders
set "baseName=New Folder"
rem Search the folder with baseName and greater number.
rem Dir is generated in descending order, so the first folder is the greatest.
set "lastFolder="
for /f "tokens=*" %%d in ('dir /ad /o-n /b "%cd%\%baseName%*." 2^>nul ^| findstr /b /e /r /c:"%baseName%[0-9]*"') do (
set "lastFolder=%%~nd"
goto endSearch
)
:endSearch
rem Test if we found a folder
if defined lastFolder (
rem Folder found, get its number by eliminating the baseName part of the name
set "lastFolderNumber=!lastFolder:%baseName%=!"
if not defined lastFolderNumber (
rem if it has no number, next folder should be 1
set "lastFolderNumber=1"
) else (
rem number found, add 1
set /a lastFolderNumber+=1
)
) else (
rem No folder exist. This is the first. So no numeration
set "lastFolderNumber="
)
rem create the folder
echo Creating: "%cd%\%baseName%%lastFolderNumber%"
mkdir "%cd%\%baseName%%lastFolderNumber%"
:endProcess
rem clean vars
endlocal