con cui è possibile contare il numero di occorrenze di "New_Folder *" e crearne uno con il numero successivo.
@echo off
set /a count=0
for /d %%d in (New_Folder*) do (
set /a count+=1
)
set /a count+=1
mkdir New_Folder%count%
Nota che il modo migliore sarebbe quella di trovare il maggior numero alla fine del Nuova_cartella, ma Windows Batch è molto limitativa e io sono un ragazzo di Linux!
EDIT: Dopo circa un'ora di googling e test:
@echo off
setlocal EnableDelayedExpansion
set max_number=0
for /d %%d in (New_Folder*) do (
set current_directory=%%~nxd
call:StrLength name_length !current_directory!
call:Substring directory_number,!current_directory!,10,!name_length!
if !directory_number! gtr !max_number! (
set max_number=!directory_number!
)
)
set /a max_number+=1
mkdir New_Folder%max_number%
:Substring
::Substring(retVal,string,startIndex,length)
:: extracts the substring from string starting at startIndex for the specified length
SET string=%2%
SET startIndex=%3%
SET length=%4%
if "%4" == "0" goto :noLength
CALL SET _substring=%%string:~%startIndex%,%length%%%
goto :substringResult
:noLength
CALL SET _substring=%%string:~%startIndex%%%
:substringResult
set "%~1=%_substring%"
GOTO :EOF
:StrLength
::StrLength(retVal,string)
::returns the length of the string specified in %2 and stores it in %1
set #=%2%
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
::echo the string is %length% characters long!
set "%~1=%length%"
GOTO :EOF
nota, la riga di comando mi restituisce un errore "La sintassi del comando non è corretto." ma tutto funziona così ti permetterò di scoprire perché ... La nuova cartella viene creata indipendentemente dall'ordine delle directory o se iniziano da 1 o meno :) Spero ti piaccia!
fonte
2012-11-11 04:52:36
Questo l'ha fatto! Grazie mille! –
funziona come un fascino. Grazie! –