Pregunta

Hola Quiero poner en práctica el código C en archivo por lotes

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

Me ejecutar el programa en C usando> redirección de DOS para que la salida impresa viene a mí en un archivo. Quiero hacer lo mismo en mi archivo por lotes en el que podía escribir algo como

 echo %variable% >> file

pero no funciona para mí

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

lo que está mal?

¿Fue útil?

Solución

Esto no puede funcionar ya que se necesita la expansión de variables retardada como se intenta hacer referencia a una variable cambiante en el if bloque. Puede intentar lo siguiente:

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

ya que esto sería evaluar c sólo cuando se ejecuta el código, no cuando se analiza la línea (en este caso el estado >> file completa).

Una traducción directa de su código C en lotes, probablemente se vería más como los siguientes, sin embargo:

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

Puede agregar mensajes si se quiere, aunque el programa en C no los tenía bien :). Y ahora se podía canalizar la salida del programa por lotes en su conjunto o simplemente añadir un <=> allí para una buena medida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top