Ir ao conteúdo
  • Cadastre-se
Thyago Barbosa

RESOLVIDO Variável númerica (criar sequencia de pastas ex: 001,002)

Recommended Posts

Galera, alguém poderia me ajudar? Então, é que precisava de um bat pra pedir para digitar a quantidade de pastas e elas criarem até chegar em determinado número, por exemplo: Eu digitei 100 e o bat criará as pastas 001, 002, 003, 004, 005 ... até chegar em 100, com 3 dígitos, o bat que tenho aqui é esse:

 

@ECHO OFF
set /p qf="digite a quantidade de pastas: "
set /a "x=001"
:while1
    if %x% leq %qf% (
        echo "%x%"
        set /a "x=x + 001"
        goto :while1)
 

Só que ele cria sem os "0" à esquerda, daí está criando: 1, 2, 3, 4, 5, 6... até chegar no número que digitei, alguém poderia me dizer o que eu coloco na variável para ele definir 3 dígitos? 
Se souberem algum outro comando que execute essa função me mandem aqui por favor :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tive um problema como esse, acontece que set /a faz operações matemáticas as coisas são interpretadas de modo para matemática então esse modo contagem não funciona a solução é criar uma outra variável b para tratar o resultado como cadeia de caracteres!

 

 

set / a a=a+1

 

set b=00%a%

 

Nesse caso você cria uma variável b com dois zeros na frente depois o resultado de a, nas primeiras nove contagens o resultado de b é satisfatório porém quando chegar ao numero 10 fica 0010, e assim não é como você quer, a solução é não usar a variável b completamente e sim somente os três últimos caracteres, então a variável b fica:

 

%b:~-3%

 

criando a pasta:

 

md %b:~-3%

Editado por Marcelo-Poa

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcelo-Poa Opa cara, tinha feito outro esqueminha que tava funcionando, mas esse dai é bem mais simples e usa menos comandos, no outro eu estava usando esse:

 

set /a "x=001"
:while2
    if %x% gtr 0 (
    set df=00)
    if %x% gtr 9 (
    set df=0)
    if %x% gtr 99 (
    set df=)
    if %x% leq %qf% (
        mkdir "Número %df%%x%"
        set /a "x=x + 1"
    goto :while2)

 

Eu acrescentava os 0 em na variavel df e colocava uma condição para definir quantos dígitos ele acrescentava :) 

Obrigado ai pela ajuda, essa que você mandou ai é bem mais simples e executa menos comandos.

E só mais uma coisa, Você sabe me dizer como faço pra pular algum número da sequencia? Tipo, eu digitei o número 20, dai queria que pulasse o 15, dai a sequencia ficaria, 1,2,3...14,16,17...20, sabe me dizer? Fiz uma aqui só que o comando é um pouquinho grande:

 

:while2

    if %x% equ 15 (
    set /a "x=x +1")

 

Tinha acrescentado essa condição com o número que eu queria pular antes do resto da condição, só que se eu quisesse pular uns 10 números, teria que escrever 10 vezes a função, se você puder me informar uma maneira melhor ficarei agradecido :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 horas atrás, Thyago Barbosa disse:

Oi Thyago, quanto ao pulo na sequencia não ví como simplificar, exceto o caso do pulo ser em razão da existência das pastas.

Por exemplo se já existirem um número de pastas, é possível pular as que já existem.

 

echo off

cls

:start

set /a a=a+1

set b=00%a%

if not exist %b:~-3% mkdir %b:~-3%

if %a% NEQ 100 goto start

 

No exemplo de cima vai criar somente as pastas que não existem, isso é para evitar muitas mensagens de erro ao tentar criar as pastas!

@Thyago Barbosa

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcelo-Poa Então, no caso não é pra pular as que já existem, mas sim NÃO criar determinado número, tipo, não tem nenhuma pasta criada, quero criar uns 50 números, mas NÃO quero criar a pasta 10, 15, 23, 27, 29 por exemplo. 

O que eu tava usando também, era depois das condições x+1 eu colocava rmdir nos números que eu não queria

ai ficava assim no final dos comandos:

 

rmdir /s /q "Numero 10"

rmdir /s /q "Numero 15"

rmdir /s /q "Numero 23"

rmdir /s /q "Numero 27"

rmdir /s /q "Numero 29"

 

Me falaram sobre um comando chamado array, que servia pra PULAR um número que não queria, mas não sei como usa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse array desconheço, se existiu e coisa do ms-dos antigo


Pensei um pouco o que da para fazer é criar uma nova variável e digitar as pastas que você quer excluir
nesse método a variável é quebrada em partes:

echo off
cls
set /p qf="digite a quantidade de pastas: "
set /p excluir="digite a sequencia de pastas a excluir: "
:start
set /a x=x+1
set b=00%x%
if "%excluir:~0,3%"=="%b:~-3%" goto start
if "%excluir:~4,3%"=="%b:~-3%" goto start
if "%excluir:~8,3%"=="%b:~-3%" goto start
if "%excluir:~12,3%"=="%b:~-3%" goto start
if "%excluir:~16,3%"=="%b:~-3%" goto start
mkdir %b:~-3%
if %x% NEQ %qf% goto start
pause

se você digitar em excluir a sequencia  010,015,023 essas pastas não são criadas


no primeiro if excluir você esta lendo os três primeiros caracteres

no segundo começa a ler depois do quarto caractere, tres e depois dele

no terceiro começa a ler depois do oitavo caractere, tres e depois dele

essa sequencia vai ate onde você quiser.


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcelo-Poa Gostei desse comando, o único problema é que se tiver mais "IF %excluir%" do que a quantidade de Números, fica dando erro, tipo, se eu coloquei até a sequencia 16,0 e só digitei 12 caracteres nessa variavel ele dá erro e não funciona. Tem algum comando que resolve esses problemas de erros ai? porque dai eu deixava uma quantidade longa de IF %excluir%, e só acrescentava a quantidade de Números na variavel %excluir%

Compartilhar este post


Link para o post
Compartilhar em outros sites


@Thyago Barbosa

Nas linhas if a variável excluir e a variável b tem que ter aspas, caso a sequencia numérica digitada for menor que quantidade de linhas de if o programa vai dar erro e fechar, pois a variável excluir fica fazia.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×