Leerzeichen, Sonderzeichen in Dateinamen lassen Batch crashen
Hallo zusammen,
hier meine Frage zum Sonntag ;):
Mit dem Dir-Befehl lasse ich mir eine Datei erzeugen, indem Pfad+Dateinamen stehen, die ich anschließend
mit for Schleifen weiterverarbeiten lasse.
Funktioniert soweit alles super, nur dass die Batch Zeichen wie "&" interpretiert und dann komische Sachen macht.
Bei Leerzeichen im Pfad oder Dateinamen stürzt sie einfach ab.
Der Dir-Befehl ist:
Mit den beiden Schleifen gibt es dann bei Leerzeichen oder Steuerzeichen Probleme:
Habt ihr eine Idee, wie ich den Dir-Befehl verändern kann, damit die Ausgabe für die For-Schleifen lesbar ist?
Oder gibt es vielleicht für die Schleifen noch zusätzliche Optionen?
Liebe Grüße!
Janet
hier meine Frage zum Sonntag ;):
Mit dem Dir-Befehl lasse ich mir eine Datei erzeugen, indem Pfad+Dateinamen stehen, die ich anschließend
mit for Schleifen weiterverarbeiten lasse.
Funktioniert soweit alles super, nur dass die Batch Zeichen wie "&" interpretiert und dann komische Sachen macht.
Bei Leerzeichen im Pfad oder Dateinamen stürzt sie einfach ab.
Der Dir-Befehl ist:
dir "y:\store\*" /s/b > "C:\files.txt"
Mit den beiden Schleifen gibt es dann bei Leerzeichen oder Steuerzeichen Probleme:
for /f "usebackq delims=" %%u in ("C:\files.txt") do call :output "%%u"
for /f "tokens=1-3" %%i in ('dir "%file%" /-C /S ^|find "Datei(en)" ^|find "Bytes"') do set size=%%k
Habt ihr eine Idee, wie ich den Dir-Befehl verändern kann, damit die Ausgabe für die For-Schleifen lesbar ist?
Oder gibt es vielleicht für die Schleifen noch zusätzliche Optionen?
Liebe Grüße!
Janet
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 261962
Url: https://administrator.de/contentid/261962
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Janet.
Da hast du dir was schönes eingebrockt
Der Fehler kommt in Zeile 4. Wenn du z.B. "a&b c.txt" übergibst, dann ergibt sich dort ...
... und schon stehen wieder die falschen Dinge in einem Paar Anführungszeichen.
Um dich vor anderen Unzulänglichkeiten (bspw. Dateinamen mit Prozentzeichen) zu schützen, würde ich die Übergabe als Parameter ganz entfernen und statt dessen vorab die Zuweisung der Variablen vornehmen.
Grüße
rubberman
Da hast du dir was schönes eingebrockt
Der Fehler kommt in Zeile 4. Wenn du z.B. "a&b c.txt" übergibst, dann ergibt sich dort ...
set "file="a&b c.txt""
... und schon stehen wieder die falschen Dinge in einem Paar Anführungszeichen.
Um dich vor anderen Unzulänglichkeiten (bspw. Dateinamen mit Prozentzeichen) zu schützen, würde ich die Übergabe als Parameter ganz entfernen und statt dessen vorab die Zuweisung der Variablen vornehmen.
@echo off &setlocal
for /f "usebackq delims=" %%u in ("C:\files.txt") do (
set "file=%%~u"
call :output
)
pause
exit /b
:output
echo "%file%"
exit /b
rubberman