Stderr in DOS/Batch

Hallo!

habe in einer batch-Datei die Zeile

for /f %%i in (‚dir /b /ah „xy“‘) do call %0 „%%i“ 2>nul

(rekursiver Aufruf)

wenn bei DIR nix gefunden wir, wird „Datei nicht gefunden“ angezeigt

dies will ich vermeiden: 2>nul am Ende nutzt nix, 2>nul in der Klammer innerhalb ‚…‘ führt zu Abbruch…

das dir brauche ich aber, sonst kann ich /ah nicht verwenden…

weiss jemand Rat? (z. B. einen Befehl stderr allgemein auf nul umzuschalten…)

Danke
cu kai

Hi Kai,

habe in einer batch-Datei die Zeile

for /f %%i in (‚dir /b /ah „xy“‘) do call %0 „%%i“ 2>nul

(rekursiver Aufruf)

… ist mir nicht klar was das werden wird (ich halte es für eine Endlosschleife …), aber egal, das hat mit dem Problem nichts zu tun. Zum >nul Problem habe ich keine Idee, und ich bin mir zeimlich sicher, dass das auch mal funktioniert hat in eienr anderen Windows Version. Mein Ansatz (gestestet mit Windows 7): besser als den Fehler unterdrücken, ist den Fehler vermeiden :smile:

set para=xy
if exist „%para%“ for /f %%i in (‚dir /b /ah „%para%“‘) do call %0 „%%i“ 2>nul

Kannst Du damit was anfangen? Als Testaufbau hat es bei mir wunschgemäß funktioniert, aber ohne den Rest der Batch zu kennen kann ich natürlich nicht sagen, ob daraus bei Dir auch ein Schuh wird.

Armin.

Moin,

Probier mal:

for /f %%i in (‚dir /b /ah „xy“‘) do call %0 „%%i“ >nul 2>&1

Gruß
Stefan

Hallo Stefan!

Danke fürs mitdenken, leider ist das Ergebnis aber so, dass die (unerwünschte) Fehlermeldung nach wie vor kommt, die (gewünschte) Standardausgabe aber dann fehlt… :smile:

die Stderr-Ausgabe kommt aus dem ‚dir…‘-Abschnitt und ist innerhalb der ‚…‘ nicht per 2>nul abfangbar… - oder?

cu kai

Hallo Armin!

das ist keine Endlosschleife:

  • wenn die Batchdatei ohne Parameter aufgerufen ist, wird in einen Abschnitt
      verzweigt (if x%1==x goto abc), wo die call-Befehle stehen
  • beim Aufruf mit Parametern wird dann was anderes gemacht und geendet
  • warum der Aufstand?: weil mit %~n1 usw. Pfade/Namen usw. gebildet werden
  • mit normalen Parametern wie %datei% usw. geht das nicht (IMHO)

Vermeiden wäre erste Wahl, leider aber findet exist nur/auch die nicht geschützten/versteckten Dateien = exist ist wahr, dir /ah… bringt trotzdem einen Fehler…

auch ein normales for … nutzt nix, weil es die versteckten Dateien nicht findet…

= Danke fürs Mitdenken, hat das Problem aber nicht gelöst…

muss die „Rukursivitiererei“ vllt. noch eine Ebene weiterbauen und versuchen die Fehler aufzufangen, mal sehen…

cu kai