Zeichen von einem Pfad zählen - die 2te
Hallo zusammen,
ich habe hier einen älteren Beitrag gefunden der es mir ermöglicht die Anzahl der Zeichen zu zählen und das Ergebnis in einem Logfile auszugeben.
DOS Befehle - Kommandozeile - Zeichen von einem Pfad zählen - Tree
Das Batch ist im vorletzten Beitrag, von Biber.
Funktioniert wunderbar, aber....
Ich bekomme beim Scannen von Ordnern und Dateinamen, die ein Sonderzeichen wie z.B. ein "+", "#" oder ein "&" enthalten, eine Fehlermeldung.
Wobei das Sonderzeichen hier nicht angezeigt wird.
Woran liegt es bzw. wie kann ich es beheben?
Ich muss in 3 Wochen einen Fileserver migrieren und wollte desn Server vorher auf die Verzeichnis- und Pfadlänge testen damit es keine Verzögerungen gibt.
Vielen Dank im Voraus...
ich habe hier einen älteren Beitrag gefunden der es mir ermöglicht die Anzahl der Zeichen zu zählen und das Ergebnis in einem Logfile auszugeben.
DOS Befehle - Kommandozeile - Zeichen von einem Pfad zählen - Tree
Das Batch ist im vorletzten Beitrag, von Biber.
Funktioniert wunderbar, aber....
Ich bekomme beim Scannen von Ordnern und Dateinamen, die ein Sonderzeichen wie z.B. ein "+", "#" oder ein "&" enthalten, eine Fehlermeldung.
Der Befehl "Garten" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
konnte nicht gefunden werden.
Wobei das Sonderzeichen hier nicht angezeigt wird.
Woran liegt es bzw. wie kann ich es beheben?
Ich muss in 3 Wochen einen Fileserver migrieren und wollte desn Server vorher auf die Verzeichnis- und Pfadlänge testen damit es keine Verzögerungen gibt.
Vielen Dank im Voraus...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 182390
Url: https://administrator.de/contentid/182390
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
10 Kommentare
Neuester Kommentar
moin,
ich darf doch?
naja - mit anderen Worten, ihr schaufelt auf ner neuen Harten Ware eure alt Daten und bevors Ärger gibt, werden die Problemfälle beseitigt.
Klarer Fall von Prof. Klosbrühe.
Ordnernamen edit Dateinamen natürlich auch mit Sonderzeichen sind besonders zu behandeln und jeder, der irgendwann mal wegen sowas auf die Schnauze gefallen ist, meidet die wie der urbi et orbi die rothaarigen Praktikanten (männliche Exemplare schliesse ich mal aus)
In diesem Sinne "der Stadt und dem Weltkreis" von kugel ist keine Rede gewesen.
Also anstatt da jetzt mit nem VBS dranzugehen - machs richtig, denn diese Sonderzeichen sorgen immer für Stress.
Immer und immer wieder.
Gruß
ich darf doch?
Ich bekomme beim Scannen von Ordnern und Dateinamen, die ein Sonderzeichen wie z.B. ein "+", "#" oder ein "&" enthalten, eine Fehlermeldung.
Ich muss in 3 Wochen einen Fileserver migrieren und wollte desn Server vorher auf die Verzeichnis- und Pfadlänge testen damit es keine Verzögerungen gibt.
Ich muss in 3 Wochen einen Fileserver migrieren und wollte desn Server vorher auf die Verzeichnis- und Pfadlänge testen damit es keine Verzögerungen gibt.
naja - mit anderen Worten, ihr schaufelt auf ner neuen Harten Ware eure alt Daten und bevors Ärger gibt, werden die Problemfälle beseitigt.
Klarer Fall von Prof. Klosbrühe.
Ordnernamen edit Dateinamen natürlich auch mit Sonderzeichen sind besonders zu behandeln und jeder, der irgendwann mal wegen sowas auf die Schnauze gefallen ist, meidet die wie der urbi et orbi die rothaarigen Praktikanten (männliche Exemplare schliesse ich mal aus)
In diesem Sinne "der Stadt und dem Weltkreis" von kugel ist keine Rede gewesen.
Also anstatt da jetzt mit nem VBS dranzugehen - machs richtig, denn diese Sonderzeichen sorgen immer für Stress.
Immer und immer wieder.
Gruß
Hallo funcarver!
Die Verwendung zusätzlicher Anführungszeichen sollte eigentlich genügen:
Grüße
bastla
P.S.: Dass auch "#" Probleme verursacht hätten, kann ich eigentlich nicht glauben ...
Die Verwendung zusätzlicher Anführungszeichen sollte eigentlich genügen:
::--MidiGetLongPath.bat [Parameter1: Ab-Länge] [[optParameter2: Lw:\Pfad[[\name.ext]]]]
@echo off & setlocal
set /a Maxlen=%1
for /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz && for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i"
del %temp%\sz >nul 2>nul
goto :eof
:EchoIfGtr parameter1:LängeIST parameter2 Pfad/Dateiname in Anfü-Zeichen
Set /a thislen=%1 - 2
If %thislen% GTR %maxlen% echo [%thislen%] %2
::-----MidiGetLongPath.bat [getestete Skizze]
bastla
P.S.: Dass auch "#" Probleme verursacht hätten, kann ich eigentlich nicht glauben ...
Hallo funcarver!
Diese überflüssigen Ergänzungen (meine Variante von Bibers Batch bringt ohne diese Zusätze das identische Ergebnis) sind eine Leistung, die ich an Deinen Stelle nicht unbedingt in den Lebenslauf aufnehmen würde ...
Grüße
bastla
P.S.: Als Du "Fehler" schriebst, hatte ich schon befürchtet, dass Du bemerkt hättest, dass die Längenberechnung ein falsches Ergebnis liefert ...
Diese überflüssigen Ergänzungen (meine Variante von Bibers Batch bringt ohne diese Zusätze das identische Ergebnis) sind eine Leistung, die ich an Deinen Stelle nicht unbedingt in den Lebenslauf aufnehmen würde ...
Grüße
bastla
P.S.: Als Du "Fehler" schriebst, hatte ich schon befürchtet, dass Du bemerkt hättest, dass die Längenberechnung ein falsches Ergebnis liefert ...
Moin Pfannenkratzer,
Überleg mal - wenn ich vorher im alten Schnipsel den Pfad+Dateinamen OHNE zwei Anführungszeichen weggeschrieben habe und schon mit (-2) korrigieren musste...
Dann musst du wohl bei bastlas Variante mit was korrigieren?
Grüße und Thx@bastla
Biber
Zitat von @funcarver:
das falsche Ergebnis? ist mir nicht aufgefallen, obwohl ich einen Testlauf mit 20 Zeichen gemacht habe, die Zeichen hab ich anschließend gezählt...
schau ich mir morgen noch mal an.....
Hmm, das müsstest du sogar noch heute während der abendlichen Talkshow rausbekommen.das falsche Ergebnis? ist mir nicht aufgefallen, obwohl ich einen Testlauf mit 20 Zeichen gemacht habe, die Zeichen hab ich anschließend gezählt...
schau ich mir morgen noch mal an.....
Überleg mal - wenn ich vorher im alten Schnipsel den Pfad+Dateinamen OHNE zwei Anführungszeichen weggeschrieben habe und schon mit (-2) korrigieren musste...
Dann musst du wohl bei bastlas Variante mit was korrigieren?
Grüße und Thx@bastla
Biber
@Biber
Nein, daran liegt's nicht - Du hattest ja in die sz-Datei den Pfad ohne Laufwerksbuchstaben (wohl, um damit CR + LF zu kompensieren - clever ) geschrieben - die "-2" sind für die Anführungszeichen dazugekommen ...
So wenig erklärlich das (für mich) auch ist - das eine Zeichen zuviel entsteht durch das Leerzeichen vor dem "
oder mit
stimmt's ...
Grüße
bastla
Nein, daran liegt's nicht - Du hattest ja in die sz-Datei den Pfad ohne Laufwerksbuchstaben (wohl, um damit CR + LF zu kompensieren - clever ) geschrieben - die "-2" sind für die Anführungszeichen dazugekommen ...
So wenig erklärlich das (für mich) auch ist - das eine Zeichen zuviel entsteht durch das Leerzeichen vor dem "
&&
" (und auch wenn, was ja genügen würde, nur mit "&
" verknüpft wird, ändert das nix), das mit in der "sz"-Datei landet - mitfor /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz&& for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i"
for /f "delims=" %%i in ('dir /s /b %~2') do (
echo "%%~pnxi">%temp%\sz
for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i"
)
Grüße
bastla
Moin bastla,
na, da sind wir ja wieder mal über ein neues interessantes Feature der Redmonder Nachwuchscoder gestolpert.
Ich finde das Verhalten der CMD.exe da auch etwas zickig - der Effekt lässt sich zwar leicht vermeiden, aber wirklich ja nur, wenn jemand mit so etwas rechnet.
Eine andere Umgehung dieser Falschberechnung-wegen-unerwartetem-Leerzeichen-am-Ende wäre so:
Grüße
Biber
na, da sind wir ja wieder mal über ein neues interessantes Feature der Redmonder Nachwuchscoder gestolpert.
Ich finde das Verhalten der CMD.exe da auch etwas zickig - der Effekt lässt sich zwar leicht vermeiden, aber wirklich ja nur, wenn jemand mit so etwas rechnet.
Eine andere Umgehung dieser Falschberechnung-wegen-unerwartetem-Leerzeichen-am-Ende wäre so:
:: so kommt ein Leerzeichen zuviel mit in die Temp-Datei "sz"
for /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz && for %%j ..........
:: so, mit dem echo-Befehl in Klammern, nicht mehr
for /f "delims=" %%i in ('dir /s /b %~2') do (echo "%%~pnxi">%temp%\sz) && for %%j ....
Grüße
Biber