Ich war zu diesem Zeitpunkt unerwartet

1

Ich erhalte "/ war zu diesem Zeitpunkt unerwartet." während Sie die unten stehende for-Schleife nur in einigen Fällen verwenden.

for /f "tokens=1,* delims=;" %%m in (file.txt) do (
    echo Inside Loop
    echo %%m
)

Ich rufe diese Batchdatei von einer anderen Batchdatei in einer Schleife auf. Also muss jedes Mal der Inhalt der Datei.txt geändert werden.

Ist der Inhalt der Datei ein Problem?

Dies ist das vollständige Skript:

echo off
SET FileName=%2
SET NUM=%3
:label
echo.
echo Parsing file.txt file
for /f "tokens=1,* delims=;" %%m in (file.txt) do (     
    echo Inside Loop
            SetLocal EnableDelayedExpansion
    echo %%n
    SET str=%%m     
    SET "Number=!str::="^&REM #!
    IF "!NUM!"=="" SET NUM="!number!"       
    if !number! GEQ !NUM! (
        if /I not "!str:(ind)=!"=="!str!" (
                echo It contains IND
        ) else >>"!FileName!" echo %1;!str!

    echo %%n>Label_Name.txt
    goto label 
    )
    endlocal
)
:end
user1553605
quelle
Dies kann nicht der Code sein, der den Fehler verursacht. Der Inhalt kann in diesem Teil des Codes keinen Fehler auslösen.
4.
hast du cygwin installiert?
@Dewfy. nein cygwin nicht installiert

Antworten:

1

Ohne Angabe des Inhalts Ihrer Datei oder der Parameter, die Sie in diesem Batch ausführen, ist dies eine reine Vermutung, aber ich vermute, dass diese Zeile:

IF "!NUM!"=="" SET NUM="!number!"       

welches NUMauf einen zitierten Wert gesetzt wird.

Möglicherweise wäre besserer Code

if not defined num set "num=!number!"

aber auch - Sie verwenden ein, GOTO labelin SETLOCAL enabledelayedexpansiondem AFAIAA die LOCALUmgebung NICHT beendet , daher würde die gesamte nachfolgende Verarbeitung mit dem SETLOCALund delayedexpansionin Kraft sein. Möglich, die SETLOCAL Enable...mehrmals auszuführen , Gebäude mehr und mehr Tiefe der lokalen Umgebung .... Am besten behoben IMHO.

Magoo
quelle
Es ist richtig, das Vielfache Setlocalführt zu einem Überlauffehler
jeb
Entschuldigung Die Parameter sind:% 1: svn: //10.0.9.68: 6140 / Projects / W83627 (HFG) /,% 2: Tempfile.txt,% 3: 956. und wenn ich ") else >>! FileName! echo% 1;! str! " diese Linie. es funktioniert ... ich weiß nicht warum
user1553605
Das ist verständlich. Eine schließende Klammer muss maskiert werden, wenn sie nicht mit der Syntax eines Befehls zusammenhängt. Daher (ind)kann die schließende Klammer beispielsweise als das Ende des Befehls interpretiert werden do (. Versuchen Sie es ^)in dieser Situation, in der "wörtlich" und nicht die spezielle Bedeutung von ")" steht. Das SETLOCALerwähnte Problem muss jedoch behoben werden. Am besten zu EDITden neuen Daten (Parametern) in Ihrer Frage, wo sie leichter zuzuordnen sind und besser formatiert werden können. Stellen Sie sich auch die Idee vor, eine Stichprobe von file.txt- etwa an der Stelle einzufügen, an der das Verarbeitungsproblem auftritt.
Magoo
0

Versuche dies:

@echo off&setlocal
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
    set "line=%%m"
    echo Inside Loop
    setlocal enabledelayedexpansion
    echo !line!
    endlocal
)
Endoro
quelle
0

nur für einige Fälle

Es könnte hilfreich sein, mehr darüber zu wissen, was diese Fälle sind. Ohne weitere Details ist die Frage (in ihrer gegenwärtigen Form) sehr anfällig für spekulative Antworten.

Hier ist ein Beispiel:

Wenn Sie FOR /? Eingeben, wird / F im folgenden Abschnitt beschrieben:

Wenn Befehlserweiterungen aktiviert sind, werden die folgenden zusätzlichen Formen des Befehls FOR unterstützt:

Laut CMD-Dokumentation werden durch Ausführen von CMD / E: ON Befehlszeilenerweiterungen aktiviert. In der Dokumentation von Drittanbietern wird darauf hingewiesen, dass das Ausführen von CMD / Y zum Deaktivieren der Befehlserweiterungen in CMD verwendet werden kann (und CMD / X zum erneuten Aktivieren verwendet werden kann).

Wenn Sie also feststellen, dass das Ausführen einer Batchdatei in einigen Fällen funktioniert, "FOR / F" die Option in anderen Fällen jedoch nicht zu erkennen scheint, liegt das Problem möglicherweise nicht am tatsächlichen Quellcode, den Sie zitieren. Das Problem kann durch die Umgebung verursacht werden, in der der Code ausgeführt wird.

TOOGAM
quelle