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
batch-file
user1553605
quelle
quelle
Antworten:
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:
welches
NUM
auf einen zitierten Wert gesetzt wird.Möglicherweise wäre besserer Code
aber auch - Sie verwenden ein,
GOTO label
inSETLOCAL enabledelayedexpansion
dem AFAIAA dieLOCAL
Umgebung NICHT beendet , daher würde die gesamte nachfolgende Verarbeitung mit demSETLOCAL
unddelayedexpansion
in Kraft sein. Möglich, dieSETLOCAL Enable...
mehrmals auszuführen , Gebäude mehr und mehr Tiefe der lokalen Umgebung .... Am besten behoben IMHO.quelle
Setlocal
führt zu einem Überlauffehler(ind)
kann die schließende Klammer beispielsweise als das Ende des Befehls interpretiert werdendo (
. Versuchen Sie es^)
in dieser Situation, in der "wörtlich" und nicht die spezielle Bedeutung von ")" steht. DasSETLOCAL
erwähnte Problem muss jedoch behoben werden. Am besten zuEDIT
den 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 vonfile.txt
- etwa an der Stelle einzufügen, an der das Verarbeitungsproblem auftritt.Versuche dies:
quelle
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:
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.
quelle