Opção 1 - Criando todas as pastas de uma vez
Com base no código inicial da sua pergunta, isso produzirá uma pasta com uma extensão (1 a max ), se ela ainda não existir em uma chamada:
SET usb=G:
SET logdir="%usb%\logs"
SET max=25
FOR /L %%F IN (1,1,%max%) DO (
IF NOT EXIST "%logdir%\%computername%-%%F" (
md "%logdir%\%computername%-%%F")
)
Ex.
Opção2-Criandopastasincrementalmente
Comosegundaopção,asoluçãoabaixoadicionaráumaextensãodearquivoincrementalumavezporchamada(combasenonúmerototaldepastasnodiretório).Damesmaforma,desconsideraaspastasexistentes:
SETusb=G:SETlogdir="%usb%\logs"
FOR /f %%A IN ('dir /b /ad %logdir%^|find /c /v "" ') DO SET fcount=%%A
SET /a fcount+=1
IF NOT EXIST "%logdir%\%computername%-%%A" (
MD "%logdir%\%computername%-%fcount%")
Ex.
Advertências
-
A primeira solução irá sempre produzir as pastas 1 até max .
-
A segunda solução tem uma fraqueza no fato de usar a contagem total de pastas em um diretório. Portanto, embora ele produza pastas com extensões numéricas e com nomes semelhantes, as sequências ordenadas verdadeiras sem intervalos (por exemplo, -1, -2, -3, -4 ...) exigem:
- todos os nomes de pasta em um diretório precisam ser os mesmos.
- quaisquer pastas adicionais (por exemplo, aquelas adicionadas manualmente) mantêm esta seqüência (ou seja, se computador-6 existir, a próxima pasta manualmente adicionada deve ser computer-7 ). / li>