Fehlermeldung bei geöffneter Datei nach for /f-Schleife unterdrücken

28/05/2011 - 11:10 von Thomas Wiedmann | Report spam
Hallo,

wenn man den Inhalt einer Datei mit einer for /f-Schleife auslesen möchte,
aber diese Datei anderweitig geöffnet ist, erscheint eine Fehlermeldung der
Form 'Die Datei "file" kann nicht gefunden werden'.
So weit so schlecht, aber nachvollziehbar.

Üblicherweise kann man ja die Ausgabe eines Fehlers bei einem Befehl mit
2>nul unterdrücken.
Trotz einigen Probierens ist mir dies bei for /f nicht gelungen.

Wie kann man die Fehlermeldung, die bei einer for-Schleife ausgegeben wird,
unterdrücken bzw. wo muß das 2>nul hier stehen?
Natürlich passiert dann möglicherweise im do-Zweig nichts mehr, was aber an
dieser Stelle mal unrelevant sein soll.

Falls dies bei einer for-Schleife nicht gehen soll, welche Chance gibt es,
per cmd-Befehl diesen Fall dann vorher z. B. mit einem if-Statement
abzufangen, d. h. zu ermitteln, daß die betr. Datei gerade irgendwo geöffnet
ist/benutzt wird?
Mit 'if not exist' geht's nicht, denn die Datei existiert ja, auch wenn sie
geöffnet ist.
Oder welche Workarounds kommen sonst infrage?

Und die analoge Frage für eine if-Bedingung:
Wie kann man eine Fehlermeldung unterdrücken, wenn bei einer if-Bedingung
ein Fehler auftritt?
Auch hier gelang mir bislang kein Versuch mit einer '2>nul'-Umleitung.

Thomas Wiedmann
 

Lesen sie die antworten

#1 Thomas Wiedmann
11/06/2011 - 12:08 | Warnen spam
Mittlerweile fand ich heraus, wie's geht, und zwar folgendermaßen:
Um eventuelle Fehlermeldungen zu unterdrücken, muß man den gesamten
for-Block zusammen mit dem do-Teil in Klammern setzen und anschließend die
Umleitung 2>nul setzen.

Muster:
(for /f "delims== tokens=1,2 xy" %%i in (Test.txt) do set %%i=%%j) 2>nul
Natürlich wird hierbei, also im Fehlerfall, das gesamte Statement gar nicht
erst ausgeführt, was hier aber aufgrund des Syntaxfehlers korrekt ist.
Ohne die Umleitung mit 2>nul kàme die berechtigte Fehlermeldung:
"xy"" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Thomas Wiedmann

Ähnliche fragen