Ir ao conteúdo
  • Cadastre-se

Outro Usar uma variavel ja definida para definirr outra variavel em batch no CMD


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Olá,

ja fiz teste, e funciona direto no cmd porém no arquivo .bat não.

 

<@echo> off

<SET> P=1

<goto> prox

:prox
<echo> %P% >%P%.ini
<set> /p %P%=<%P%.ini
<echo> " %1% (aqui deveria aparecer o numero)"

<set> /a P=%P%+1 <goto> prox

<pause>

 

Minha intenção era utilizar em sequencia para não precisar setar variavel a variavel!

No loop for e mesma coisa sisplesmente onde deveria estar a variavel ficara vazio!

Porém direto no prompt funciona 

Se alguém puder me dar uma luz

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Poderia salvar o seu código em um bloco de código? Porque a variável deveria aparecer quando você digita echo %1% se você salvou a variável em %P% e não em %1%??

 

Veja se é algo assim para que não entre em um loop infinito eu coloquei para só ir até 20 no máximo e para poder ver o resultado exibir só 1 número por segundo:

 

@echo off
SET P=1

:prox
echo %P% >%P%.ini
set /p %P%=<%P%.ini
echo  %P%
timeout /t 1 > nul
if %P% GEQ 20 goto :Fim
set /a P=%P%+1
goto prox

:Fim
pause

 

rZKiCo6.gif

 

Link para o comentário
Compartilhar em outros sites

Desculpe ricardo_br mas eu não sei como salvar o .bat  neste site.

Assim.

Eu preciso que em 

 

<Set> /p %P%=<%P%.ini

Seja 

<Set> /p 1=<1.ini

E não 

<Set> /p %P%=<1.ini

 

Pois eu preciso chamar o que estiver no arquivo utilizando %1% e não %P% ele muda

Por exemplo desejo obter o número chamando por

Echo %1%

Em vez de 

Echo %P%

 

Não sei se conseguiu me entender?

PS.

Desculpe por não  ter posto um limite antes

Link para o comentário
Compartilhar em outros sites

É só usar o botão código para postar código. Não tem "batch" nas opções mais basta usar html ou outro que você quiser:

 

uYwzF15.png

 

Quanto a salvar em variáveis 1,2,3...os arquivos batch já reservaram essas variáveis como especiais para parâmetros. Por exemplo se você chamar um arquivo bat da seguinte maneira: 

 

meubatch.bat gato cachorro banana

 

%1 = gato

%2 = cachorro

%3 = banana

 

Portanto esses números não podem ser variáveis normais que você cria. Ai você teria que dar um outro nome para as variáveis como var1, var2, var3 etc...

 

Veja se seria algo assim que você procura:

 

@echo off

:prox
set /a Contador=%Contador% + 1
echo %Contador% >%Contador%.ini
set /p Var[%Contador%]=<%Contador%.ini
cls
call echo %%Var[%Contador%]%%	
timeout /t 1 > nul
if %Contador% GEQ 20 goto :Fim
goto prox

:Fim
pause

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Mais dentro do loop? Porque o valor depois de var depende de %contador% correto?

 

Ai você teria que usar o echo %var1% %var2% depois que o loop já terminou...

 

@echo off

:prox
set /a Contador=%Contador% + 1
echo %Contador% >%Contador%.ini
set /p var%Contador%=<%Contador%.ini	
if %Contador% GEQ 20 goto :Fim
goto prox

:Fim
cls
echo %var1%
timeout /t 1 >nul
cls
echo %var2%
timeout /t 1 >nul
cls
echo %var3%
timeout /t 1 >nul
cls
echo %var4%
timeout /t 1 >nul
cls
echo %var5%
timeout /t 1 >nul
cls
echo %var6%
timeout /t 1 >nul
cls
echo %var7%
timeout /t 1 >nul
cls
echo %var8%
timeout /t 1 >nul
cls
echo %var9%
timeout /t 1 >nul
cls
echo %var10%
timeout /t 1 >nul
cls
echo %var11%
timeout /t 1 >nul
cls
echo %var12%
timeout /t 1 >nul
cls
echo %var13%
timeout /t 1 >nul
cls
echo %var14%
timeout /t 1 >nul
cls
echo %var15%
timeout /t 1 >nul
cls
echo %var16%
timeout /t 1 >nul
cls
echo %var17%
timeout /t 1 >nul
cls
echo %var18%
timeout /t 1 >nul
cls
echo %var19%
timeout /t 1 >nul
cls
echo %var20%
timeout /t 1 >nul
pause

 

 

Ou então algo assim:

 

@echo off
SetLocal EnableDelayedExpansion

:prox
set /a Contador=%Contador% + 1
echo %Contador% >%Contador%.ini
set /p var%Contador%=<%Contador%.ini	
if %Contador% GEQ 20 goto :Fim
goto prox

:Fim
for /L %%a in (1,1,20) do echo !var%%a!
pause

 

Link para o comentário
Compartilhar em outros sites

@Lucas Hahnn Também poderia usar dentro do loop mais não sei se entendi sua intenção direito seria usar um echo para cada variável? porque se você colocar echo %var2% dentro do loop e o loop rodar 20 vezes ele vai dar 20x "2" ou o valor que tiver salvo em %var2%.

 

E considerando que você não quer usar aquilo que eu coloquei no post# 4...

call echo %%Var[%Contador%]%%

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!