2009-03-23 19 views
2

HALLO Ich mag diesen C-Code in Batch-Datei implementierenBatchdatei äquivalent für diesen Code

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 tun, wo ich so etwas wie

echo %variable% >> file 

schreiben könnte, aber es für mich nicht funktioniert

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

, was falsch ist?

+0

Möchten Sie _sure_ in die Variable j einlesen und die Adresse von j ausgeben? Ihre Schleife kann sich merkwürdig verhalten, und Sie werden immer dasselbe ausdrucken ... –

Antwort

4

Das kann nicht funktionieren, da Sie verzögerte Variable Expansion benötigen, wie Sie an eine sich verändernde Variable im if Block zu beziehen versuchen. Sie können versuchen, die folgenden:

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

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

würde Eine einfache Übersetzung Ihres C-Code in Batch 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 Eingabeaufforderungen hinzufügen können, wenn Sie so wollen, obwohl das C-Programm sie nicht 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.

+0

Ich habe die beabsichtigte Lösung geändert, die ich erwartet hatte. Ich möchte printf ("% d", j) ausführen; nicht & j. Kannst du es mir jetzt sagen? –

+0

Dann ist dieser Code bereits tut, was Sie wollen. Ich habe den alten Code als printf ("% i", j) vorher falsch gelesen, also habe ich entsprechend umgesetzt. Hey, sogar meine Variablen sind gleich benannt. Soweit ich das beurteilen kann, machen meine Batch-Dateien dasselbe wie das C-Programm. – Joey