Frage

HALLO Ich mag diesen C-Code in Batch-Datei implementieren

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

Ich würde das c-Programm> Umleitung in DOS laufen, so dass die gedruckte Ausgabe in einer Datei zu mir kommt. Ich möchte die gleiche Sache in meiner Batch-Datei zu tun, wo ich so etwas wie

schreiben könnte
 echo %variable% >> file

aber es funktioniert nicht für mich arbeiten

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

, was falsch ist?

War es hilfreich?

Lösung

Das kann nicht funktionieren, da Sie variable Erweiterung verzögert benötigen, wie Sie an eine sich verändernde Variable im if Block zu beziehen versuchen. Sie können versuchen Sie Folgendes:

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

als diese c bewerten würde nur dann, wenn der Code ausgeführt wird, nicht, wenn die Linie (in diesem Fall der komplette if Anweisung) analysiert wird.

Eine einfache Übersetzung Ihres C-Code in Batch wäre wahrscheinlich wie folgt aussehen, aber:

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

Sie können Eingabeaufforderungen, wenn Sie möchten, obwohl das C-Programm nicht, sie hat entweder :). Und nun können Sie die Ausgabe des Batch-Programm als Ganzes oder fügen Sie einfach einen >> file dort für eine gute Maßnahme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top