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
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.
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…
die Stderr-Ausgabe kommt aus dem ‚dir…‘-Abschnitt und ist innerhalb der ‚…‘ nicht per 2>nul abfangbar… - oder?
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…