Eu tenho um BATCH.BAT e quando eu executo, eu preciso perguntar quantas pastas eu quero criar:
echo How many folders you want? (enter below)
SET /P "ANSWER="
então eu preciso digitar o número (que não é maior que 50 mas maior que 1) e quando eu apertei enter, eu preciso criar pastas nesta pasta %~dp0..\batch\
. por exemplo. se eu digitar o número 12 isso será criado:
%~dp0..\batch\
|_____ 01
|
|_____ 02
|
|_____ 03
|
|_____ 04
|
|_____ 05
|
|_____ 06
|
|_____ 07
|
|_____ 08
|
|_____ 09
|
|_____ 10
|
|_____ 11
|
|_____ 12
e quando as pastas são criadas eu preciso colocar isso em todas as pastas criadas:
IF EXIST "%~dp0..\batch\01\" (
ROBOCOPY "%~dp0..\scripts" "%~dp0..\batch\01" "script.1s" /Z /B
BREAK>"%~dp0..\batch\01\t.ini"
BREAK>"%~dp0..\batch\01\k.txt"
BREAK>"%~dp0..\batch\01\s.txt" )
IF EXIST "%~dp0..\batch\02\" (
ROBOCOPY "%~dp0..\scripts" "%~dp0..\batch\02" "script.1s" /Z /B
BREAK>"%~dp0..\batch\02\t.ini"
BREAK>"%~dp0..\batch\02\k.txt"
BREAK>"%~dp0..\batch\02\s.txt" )
IF EXIST "%~dp0..\batch\03\" (
...
Como posso conseguir essa criação de pastas com base no número de entrada?
e também como posso evitar ter 49x IF EXIST "%~dp0..\batch\XY\" (
??
EDITAR: aqui está minha tentativa:
rem @echo off
setlocal enabledelayedexpansion
:0001
echo How many folders you want? (enter below)
SET /P "ANSWER="
set ANSWER="%%F"
IF %ANSWER% LSS 2 GOTO :0001
IF %ANSWER% GTR 50 GOTO :0001
SET batch="%~dp0..\batch\"
SET max=25
SET min=2
FOR /L %%F IN (1,%max%,%min%) DO (
IF NOT EXIST "%batch%\0-%%F" (
md "%batch%\0-%%F")
)
windows
command-line
batch-file
cmd.exe
user902300
fonte
fonte
Respostas:
Sua tentativa tem problemas não resolvidos:
pesquisar o para / l sintaxe
números abaixo de 10 precisam de um zero inicial (resolvidos adicionando 100 e ocupando os dois últimos lugares)
%%F
é válido apenas no escopo do comando for (mesma linha / bloco de código)O lote a seguir não precisa de expansão atrasada devido à colocação do código em uma sub-rotina chamada, passando o número como um argumento.
fonte