equivalente archivo por lotes para este código
-
21-08-2019 - |
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?
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.