como solicitar número para criar pastas com base na entrada?


0

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")
    )

Qual é a sua pergunta ?????
Eric F

@DavidPostill bem não sei quanto mais posso explicar o que já está dito no post! Eu forneci tudo o que tenho incluindo meu código e também expliquei onde estou preso Como posso conseguir essa criação de pastas com base no número de entrada? . Também estou ciente de que o superuser.com não é um serviço gratuito de escrita de código / script ... Eu busco (qualquer) ajuda devido ao meu problema - ele não precisa ser solução / código full-script-copy-paste. FALHO em entender por que isso é "muito amplo" e quais são minhas opções agora.
user902300

Suas opções são explicadas no meu primeiro comentário. Você só forneceu duas linhas de código e não fez nenhuma tentativa com o restante dos seus requisitos.
DavidPostill

Dicas: para - condicionalmente executar um comando várias vezes, md - Criar Diretório - Cria uma nova pasta, E se - Condicionalmente execute um comando.
DavidPostill

@DavidPostill editado ... (agora com minha tentativa falhada)
user902300

Respostas:


1

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)

  • a variável %%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.


:: Q:\Test\2018\05\26\SU_1325998.cmd
@Echo off
SET min=2
SET max=50

:0001
Set "ANSWER="
echo How many folders do you want? (enter below)
SET /P "ANSWER=" 
If not defined ANSWER Exit /B
IF %ANSWER% LSS %min% (Echo %ANSWER% is not enaugh min=%min%& GOTO :0001 )
IF %ANSWER% GTR %max% (Echo %ANSWER% is too much   max=%max%& GOTO :0001 )

FOR /L %%F IN (1,1,%ANSWER%) DO Call :Sub %%F
Echo Done
Pause
Goto :Eof

:Sub
Set /A "N=100 + %1"
SET "batch=%~dp0..\batch\%N:~-2%"
IF NOT EXIST "%batch%" md "%batch%" >NUL

:: IMO RoboCopy is overkill here
COPY "%~dp0..\scripts\script.1s" "%batch%" >NUL
for %%A in (t.ini k.txt s.txt) Do if not exist "%batch%\%%A" Break>"%batch%\%%A"

> SU_1325998.cmd
How many folders do you want? (enter below)
1
1 is not enaugh min=2
How many folders do you want? (enter below)
99
99 is too much   max=50
How many folders do you want? (enter below)
3

Done
Drücken Sie eine beliebige Taste . . .

> tree \ /F
├───batch
│   ├───01
│   │       k.txt
│   │       s.txt
│   │       script.1s
│   │       t.ini
│   │
│   ├───02
│   │       k.txt
│   │       s.txt
│   │       script.1s
│   │       t.ini
│   │
│   └───03
│           k.txt
│           s.txt
│           script.1s
│           t.ini
│
├───scripts
│       script.1s
│
└───test
        SU_1325998.cmd

1
agora eu entendo (e aprendi) onde eu estava faltando. danke
user902300
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.