Ir ao conteúdo

Posts recomendados

Postado

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) 

Postado

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

 

 

Postado

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
Postado

@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
 

 

Postado

@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 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!