Ir ao conteúdo
  • Cadastre-se
Wallisonlau

Outro Definição de Valor de Variável via cmd (.bat)

Posts recomendados

Caros,
Estou automatizando um processo interno na empresa e para isso estou fazendo uma pequena ".bat" o processo ja esta funcional porém queria dar uma melhorada na coleta de uma informação que estou usando uma variável, basicamente gostaria de : 

Ou predefinir os valores que podem ser inseridos na variavel   (0001,0002,0003,0004,0005,0006 ...)
Ou  fazer com que seja sempre setado o valor com 4 posições. ( Se o usuario inserir 1 , converte para 0001 , se insere 39 converte para 0039)

echo Informe o codigo e pressione Enter: 
@set /p var=

Alguém sabe se isso é possivel via CMD? (.bat) 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é possível. O número nunca vai ter mais de 4 dígitos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br Não!!!  Ficara "sempre" limitado a 4 posições.

0001

0002

0010

0020

003

0030

0999

Exemplos acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tem um exemplo que coloca zeros na frente, informa erro se a pessoa colocar outra coisa que não sejam números, e só permite no máximo 4 dígitos. Ele está em loop para fazer teste mesmo a pessoa colocando tudo certo ele volta ao inicio mais da para desfazer facilmente:

 

 


@echo off
:Inicio
cls
echo.
set /p Numero=Entre com um n£mero: 

for /f "delims=0123456789" %%a in ('echo %Numero%') do set Teste=%%a

if defined Teste goto Erro
if "%Numero:~0,1%"==" " Goto Erro
if Not "%Numero:~0,-4%"=="" Goto Erro2

if "%Numero%"=="" set Numero=0000& Goto Resultado
if "%Numero:~0,-1%"=="" set Numero=000%Numero%& Goto Resultado
if "%Numero:~0,-2%"=="" set Numero=00%Numero%& Goto Resultado
if "%Numero:~0,-3%"=="" set Numero=0%Numero%& Goto Resultado

:Resultado
echo O n£mero final ‚: %Numero%
echo.
pause
Goto Inicio

:Erro
cls
echo.
echo Erro, favor insira apenas n£meros...
echo.
pause
set Teste=
Goto Inicio

:Erro2
cls
echo.
echo Erro, favor insira no m ximo 4 digitos...
echo.
pause
set Teste=
Goto Inicio

InserirApenasNumeros.zip

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, ricardo_br disse:

Aqui tem um exemplo que coloca zeros na frente, informa erro se a pessoa colocar outra coisa que não sejam números, e só permite no máximo 4 dígitos. Ele está em loop para fazer teste mesmo a pessoa colocando tudo certo ele volta ao inicio mais da para desfazer facilmente:

 

 

 


@echo off
:Inicio
cls
echo.
set /p Numero=Entre com um n£mero: 

for /f "delims=0123456789" %%a in ('echo %Numero%') do set Teste=%%a

if defined Teste goto Erro
if "%Numero:~0,1%"==" " Goto Erro
if Not "%Numero:~0,-4%"=="" Goto Erro2

if "%Numero%"=="" set Numero=0000& Goto Resultado
if "%Numero:~0,-1%"=="" set Numero=000%Numero%& Goto Resultado
if "%Numero:~0,-2%"=="" set Numero=00%Numero%& Goto Resultado
if "%Numero:~0,-3%"=="" set Numero=0%Numero%& Goto Resultado

:Resultado
echo O n£mero final ‚: %Numero%
echo.
pause
Goto Inicio

:Erro
cls
echo.
echo Erro, favor insira apenas n£meros...
echo.
pause
set Teste=
Goto Inicio

:Erro2
cls
echo.
echo Erro, favor insira no m ximo 4 digitos...
echo.
pause
set Teste=
Goto Inicio

 

InserirApenasNumeros.zip 488 B · 1 download

@ricardo_br Não consegui absorver a logica em questão,pois pelo que entendi ele esta gerando uma nova linha ": Resultado"  com o resultado validado.
Mas nao consegui inserir o bloco em minha instrução para que tal resultado se torne a variável a ser usada.

Abaixo segue o bloco que estou usando e precisava que esse resultado virasse o valor de VAR.

 

"echo Informe o codigo e pressione Enter: 
@set /p var=
if %VAR% GEQ 100 goto Codigo
if %VAR% LEQ 100 goto altera
:Codigo
echo Informe um codigo valido e pressione Enter: 
@set /p var=
if %VAR% GEQ 100 goto Codigo
if %VAR% LEQ 100 goto altera" 
 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não sei se entendi. Você quer que se a variável seja maior ou igual 100 seja executado a parte em :Codigo se a variável for menor ou igual a 100 seja executada a parte em :Alerta e depois mostre a variável com zeros na frente tipo:

 

0190 e maior que 100

0080 e menor que 100

 

Veja se algo parecido com isso:

 

b9fHgOg.gif

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br Vou tentar detalhar melhor o objetivo final.
 

Essa variável que estou coletando, hoje estou com o seguinte pedido para o usuário:

 

" Insira o codigo de sua empresa com 04 digitos."

 

O dado inserido acima ira alimentar a variável 

Esse pedido se faz necessário porque  dentro da sequencia dos processos do .bat 

tenho a seguinte instrucao:

fart C:\w\config.xml "xxxx" "%var%" 

Que tem objetivo de alterar dentro do  arquivo de configuração todos os campos que estão como "xxxx" pelo que foi digitado pelo usuario "0002".

O valor em questao tem que ser sempre de 4 posições, pois assim é a estrutura do arquivo de configuração.

Como alguns usuario por vezes desconsideram o pedido de inserir com 4 digitos, queria limitar isso ja na coleta, ou seja se inserir 2 sera convertido para 0002.

As condicoes que coloquei é porque so temos 100 lojas portanto se o usuario inserir o valor 101 da erro e volta ao menu

se inserir 99 ele converte para 0099 e da sequencia nas instrucoes.


Desculpe o grande texto, mas foi pra tentar detalhar e peco desculpas tambem pela amolacao. srsrsrsr
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que agora entendi melhor. Fiz esse vídeo para explicar algumas coisas e estou colocando as últimas correções no zip em anexo.

InserirApenasNumeros.zip

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br Funcionou plenamente aqui, te agradeço imensamente pelo auxilio.
Se não for abusar muito (risos) tive uma ideia aqui que é o seguinte.

O projeto em questão foi elaborado rodar em Win64 por sua vez utiliza-se (C:\"Program Files (x86)") seria possível inserir no inicio do .bat uma  validacao "Oculta" se existe o diretorio C:\"Program Files (x86)"  e caso tenha siga o fluxo normal do bat  caso nao tenha Crie o mesmo e depois siga?

 

Att 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer que verifique se o programa fart está em %programfiles% ou %programfiles% (x86)?

 

if not exist "%programfiles% (x86)" md "%programfiles% (x86)"

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br Otimo..
Muito obrigago por todos auxilio prestado..

Att

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

×
×
  • Criar novo...