Problem mit For und Errorlevel
Hallo Zusammen sitze hier grat an einem Batchfile und hab folgendes Prob:
Eine txt (softlist.txt) beinhaltet mehrere Angaben wie Winrar usw.
Das Ziel: mittels For Schleife und Errorlevel doppelte Einträge entfernen:
Zuerst erstelle ich mittels Batch eine weitere txt (sortsoftlist.txt)
(Womit ich zu meiner 2 Frage komme. Ist es möglich mittels Batch eine komplett leere txt zu erstellen?)
anschlissend "vergleiche" ich die zwei txt und wenn der Eintrag nicht vorhanden ist, wird er in die 2. txt geschrieben...
FOR /f %%a IN (softlist.txt) do find /i "%%a" "sortsoftlist.txt" & echo %errorlevel%
Ergibt denn errorlevel 3, IMMER... Ob Eintrag vorhanden oder nicht.
Eigentlich sollte das ganze dann so aussehen:
FOR /f %%a IN (softlist.txt) do find /i "%%a" "sortsoftlist.txt" & if %errorlevel% == 1 echo %%a >> sortlist.txt
Wenn ich es direkt in CMD test erhalte ich beim ersten Versuch errorlevel 0 und beim zweiten mal 1...
Hoffe es kann mir jemand helfen...
MfG Copro
Eine txt (softlist.txt) beinhaltet mehrere Angaben wie Winrar usw.
Das Ziel: mittels For Schleife und Errorlevel doppelte Einträge entfernen:
Zuerst erstelle ich mittels Batch eine weitere txt (sortsoftlist.txt)
(Womit ich zu meiner 2 Frage komme. Ist es möglich mittels Batch eine komplett leere txt zu erstellen?)
anschlissend "vergleiche" ich die zwei txt und wenn der Eintrag nicht vorhanden ist, wird er in die 2. txt geschrieben...
FOR /f %%a IN (softlist.txt) do find /i "%%a" "sortsoftlist.txt" & echo %errorlevel%
Ergibt denn errorlevel 3, IMMER... Ob Eintrag vorhanden oder nicht.
Eigentlich sollte das ganze dann so aussehen:
FOR /f %%a IN (softlist.txt) do find /i "%%a" "sortsoftlist.txt" & if %errorlevel% == 1 echo %%a >> sortlist.txt
Wenn ich es direkt in CMD test erhalte ich beim ersten Versuch errorlevel 0 und beim zweiten mal 1...
Hoffe es kann mir jemand helfen...
MfG Copro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25592
Url: https://administrator.de/contentid/25592
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
Na, copro,
dann ist irgendetwas anderes faul bei ERRORLEVEL 3...
Üblich bei Find.exe sind halt "0" wenn gefunden oder "1" wenn nicht gefunden.
Errorlevel 3 deutet eher auf einen Syntaxfehler oder Datei nicht gefunden...
Tasten wir uns langsam ran,,am CMD-Prompt (kein Batch).
~~~~~
Schritt 1:
Z.B. also...
Winrar.exe
AngelaMerkelNackig.jpg
..etc.
~~~~~~~~~~~~~~~~~~~~
Schritt 2, falls das geklappt hat:
~~~~~
Schritt 3:
Sollte nur alle Zeilen auflisten, die in sortlist.txt, aber nicht in sortsoftlist sind.
Wo ich jetzt ein wenig durcheinander komme: arbeitest Du jetz mit 2 oder 3 Dateien?
Angehängt werden soll doch bestimmt an die Datei "sortsoftlist.txt", oder?
Das wäre dann diese CMD-Zeile:
bzw. als Batch mit zwei Prozentzeichen statt einem:
In der Theorie klappt es... *gg
"|" ist ein einfaches Pipe-Symbol...der Output von einem Programm soll als Input für das nächste dienen.
echo.|date
...schickt einen "Returntastendruck" an den Befehl "Date".
~~~~~~
"&" verkettet zwei Befehle.
"@echo off & setlocal" ist meine Standard-Startzeile injedem Batch.
Mache ein "echo off" und danach ein "setlocal".
~~~~~~
"&&" ist ein "LOGISCHES UND".
dir *.txt >nul && copy *.txt x:\y\*.*
Mache ein DIR-Kommando, Output ins Nirwana UND NUR WENN KEIN FEHLER dann ein copy...
Wenn keine *.txt-Dateien gefunden werden, dann IST ES ein Fehler und copy wird nicht ausgeführt.
~~~~~~~
..würde, ähnlich wie in Deinem Fall oben, in der MyIniDatei.ini nach einer Zeile "whatever" suchen (Ausgabe von Find wieder ins Nirwana) bei NUR WENN FEHLER (nicht gefunden) eine neue Zeile mit "whatever=42" anhängen.
Besser kann ich es vor dem Frühstück nicht erklären
Gruß Biber
dann ist irgendetwas anderes faul bei ERRORLEVEL 3...
Üblich bei Find.exe sind halt "0" wenn gefunden oder "1" wenn nicht gefunden.
Errorlevel 3 deutet eher auf einen Syntaxfehler oder Datei nicht gefunden...
Tasten wir uns langsam ran,,am CMD-Prompt (kein Batch).
~~~~~
Schritt 1:
FOR /f %a IN (softlist.txt) do @echo %a
...sollte alle Zeilen (bzw. das erste Token davon) liefern,Z.B. also...
Winrar.exe
AngelaMerkelNackig.jpg
..etc.
~~~~~~~~~~~~~~~~~~~~
Schritt 2, falls das geklappt hat:
FOR /f %a IN (softlist.txt) do find /i "%a" sortsoftlist.txt
Soll eine wirre Liste bringen von Fundstellen und Leerzeilen, wenn nicht gefunden.~~~~~
Schritt 3:
Sollte nur alle Zeilen auflisten, die in sortlist.txt, aber nicht in sortsoftlist sind.
Wo ich jetzt ein wenig durcheinander komme: arbeitest Du jetz mit 2 oder 3 Dateien?
Angehängt werden soll doch bestimmt an die Datei "sortsoftlist.txt", oder?
Das wäre dann diese CMD-Zeile:
bzw. als Batch mit zwei Prozentzeichen statt einem:
In der Theorie klappt es... *gg
echo.|date
...schickt einen "Returntastendruck" an den Befehl "Date".
~~~~~~
"&" verkettet zwei Befehle.
"@echo off & setlocal" ist meine Standard-Startzeile injedem Batch.
Mache ein "echo off" und danach ein "setlocal".
~~~~~~
"&&" ist ein "LOGISCHES UND".
dir *.txt >nul && copy *.txt x:\y\*.*
Mache ein DIR-Kommando, Output ins Nirwana UND NUR WENN KEIN FEHLER dann ein copy...
Wenn keine *.txt-Dateien gefunden werden, dann IST ES ein Fehler und copy wird nicht ausgeführt.
~~~~~~~
Besser kann ich es vor dem Frühstück nicht erklären
Gruß Biber