2016-10-24 3 views
1

Ich habe folgende input.txt Datei:Wie bekomme ich die Ausgabe von zwei For-Schleifen?

tr=min;JohnLoeffler 
te=min;TimWalter 

Ziel der Batch-Datei I wollen, dass ich geben:

tr min;JohnLoeffler 
te min;TimWalter 

und die meine Batch-Datei ist:

setlocal EnableDelayedExpansion 
for /f "tokens=1,2,3* delims=;" %%a in (E:\input.txt) do (
echo.%%a>current.tok 
E:\ProtocoI\%%b 
for /f " tokens=* delims= " %%a in (E:\input.txt) do (
call :sub1 %%a 
) 
GOTO :EOF 
:sub1 
echo %1 %2 
echo.%1 %2; %%b;!RESULT!>>output.txt 
) 
GOTO :EOF 

aber der Ausgang, den ich bekomme, ist:

tr min; %b; 
te min; %b; 

Beachten Sie, dass ich diese current.tok für die Verwendung in einer weiteren Funktion benötigt und die zweite for-Schleife für das Löschen des gleichen Vorzeichens te = min und tr = min. jetzt weiß ich nicht, wie man mit diesen beiden for loops arbeitet, um die korrekte Ausgabe zu erhalten. Kann mir jemand helfen? Dank in advace, Hoda

+0

': sub1' in einem Block von Code, müssen Sie es außerhalb der Klammern verschieben. – Bloodied

+0

@Arescet Sie meinen außerhalb der Klammern der zweiten for-Schleife? –

+0

Ja, ein Label darf nicht innerhalb einer Schleife oder irgendetwas anderem zwischen Klammern sein. es muss draußen platziert werden. Es wird entweder in einen Syntaxfehler laufen oder sich fehlerhaft verhalten. – Bloodied

Antwort

0

Try this, Ich habe ein wenig zu erraten, was Sie zu erreichen versuchen.

@Echo Off 
SetLocal EnableDelayedExpansion 

(Set SrcFile=E:\input.txt) 

For /F "UseBackQ EOL== Tokens=1-2* Delims==;" %%A In ("%SrcFile%") Do (
    >current.tok Echo=%%A=%%B 
    >>E:\ProtocoI\%%C\output.txt Echo=%%A %%B; %%C; !RESULT!) 
Goto :EOF 
+0

Danke für die Bearbeitung, Sie würden nicht glauben, wie schwierig es ist, auf einem Android-Handy mit Vorhersagetext in ein Forum zu schreiben! – Compo

+0

I Ich schlage vor, dass "EOL ==" kontraproduktiv ist und besser weggelassen wird. Es ist nicht klar, woher "Geister" kommen. In OPs Original wird "%% a" illegal wiederverwendet und '%% b' ist out-of Der Schlüssel ist, die Begrenzer zu verwenden, um die Daten in 'current.tok' richtig zu tokenisieren und zu rekonstruieren, die wir aus Mangel an weiteren Informationen" str1 = str2 "annehmen müssen. Was die Daten in die 'output.txt' Datei (n) - nun - gut geraten, aber die Kristallkugel etwas überladen ... – Magoo

+1

Es ist mein Verständnis, dass das Einstellen von EOL auf das selbe wie DELIMS effektiv die verrückte Standard-EOL eines Semikolons umgeht stellt sicher, dass alle Zeilen gelesen werden. _ (Ich hielt dies für notwendig, da das OP eine mit Semikolon bestrichene Datei las.) Das OP hat erklärt, dass dies der Fall ist Teil eines Skripts, da ich keine Ahnung habe wo! ERGEBNIS! Ich war nicht in der Lage, das wahrscheinliche% RESULT% zu korrigieren oder seine Verwendung zu verifizieren. – Compo

Verwandte Themen