Pergunta

Oi eu quero implementar este código C no arquivo de lote

int i;
scanf("%d", &i);
for(int j = 0;j<i;j++)
{
  scanf("%d",&j);
  printf("%d",j);
}

Gostaria de executar o programa c usando> redirecionamento em DOS para que a saída impressa vem a mim em um arquivo. Eu quero fazer a mesma coisa no meu arquivo de lote onde eu poderia escrever algo como

 echo %variable% >> file

mas ele não funciona para mim

@echo off
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo %c% >> file.txt
)

o que está errado?

Foi útil?

Solução

Isso não pode trabalho desde que você precisa atrasou a expansão de variáveis ??como você tentar se referir a uma variável de mudança no bloco if. Você pode tentar o seguinte:

@echo off
setlocal enabledelayedexpansion
for %%i in (1 2 3) do (
  set /p c=enter a name? 
  echo %%i
  echo !c! >> file.txt
)

como este iria avaliar c apenas quando o código é executado, não quando a linha (neste caso a declaração if completa) é analisado.

Uma tradução direta do seu código C no lote provavelmente mais parecido com o seguinte, no entanto:

@echo off
set /p i=
:loop
set /p j=
echo %j%
set /a j+=1
if %j% LSS %i% goto loop

Você pode adicionar prompts se quiser, embora o programa C não tê-los, quer :). E agora você pode canalizar a saída do programa de lote como um todo ou apenas adicionar um >> file lá para uma boa medida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top