Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zeichen von einem Pfad zählen - die 2te

Frage Entwicklung Batch & Shell

Mitglied: funcarver

funcarver (Level 1) - Jetzt verbinden

21.03.2012 um 21:15 Uhr, 4074 Aufrufe, 10 Kommentare

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.

http://www.administrator.de/contentid/55024

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.

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...
Mitglied: 60730
21.03.2012 um 22:15 Uhr
moin,

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.

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ß
Bitte warten ..
Mitglied: bastla
21.03.2012 um 22:19 Uhr
Hallo funcarver!

Die Verwendung zusätzlicher Anführungszeichen sollte eigentlich genügen:
01.
::--MidiGetLongPath.bat [Parameter1: Ab-Länge] [[optParameter2: Lw:\Pfad[[\name.ext]]]] 
02.
@echo off & setlocal 
03.
set /a Maxlen=%1 
04.
for /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz && for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i" 
05.
del %temp%\sz >nul 2>nul 
06.
goto :eof 
07.
:EchoIfGtr parameter1:LängeIST parameter2 Pfad/Dateiname in Anfü-Zeichen 
08.
Set /a thislen=%1 - 2 
09.
If %thislen% GTR %maxlen% echo [%thislen%] %2 
10.
::-----MidiGetLongPath.bat [getestete Skizze]
Grüße
bastla

P.S.: Dass auch "#" Probleme verursacht hätten, kann ich eigentlich nicht glauben ...
Bitte warten ..
Mitglied: funcarver
22.03.2012 um 19:49 Uhr
Der Weg war der Richtige, war aber noch ein kleiner Fehler drin. Hab es dann aber gefunden....

Danke...

01.
::--MidiGetLongPath.bat [Parameter1: Ab-Länge] [[optParameter2: Lw:\Pfad[[\name.ext]]]]  
02.
@echo off & setlocal & set /a Maxlen=%1  
03.
@for /f "delims=" %%i in ('dir /s /b %~2') do @( echo "%%~pnxi">%temp%\sz && for %%j in (%temp%\sz) do @call :EchoIfGTR %%~zj "%%~i"  
04.
05.
del %temp%\sz >nul 2>nul  
06.
goto :eof  
07.
:EchoIfGtr parameter1:LängeIST parameter2 Pfad/Dateiname in Anfü-Zeichen  
08.
Set /a thislen=%1 - 2  
09.
If %thislen% GTR %maxlen% echo [%thislen%] %2  
10.
::-----MidiGetLongPath.bat [getestete Skizze]
Bitte warten ..
Mitglied: bastla
22.03.2012 um 20:46 Uhr
Hallo funcarver!
war aber noch ein kleiner Fehler drin.
Welcher Fehler mit welcher Auswirkung?

Grüße
bastla
Bitte warten ..
Mitglied: funcarver
22.03.2012 um 21:18 Uhr
Zeile 4,

@( echo "%%~pnxi">%temp%\sz && for %%j in (%temp%\sz) do @call :EchoIfGTR %%~zj "%%~i" )

das @ und danach die klammer.....
Bitte warten ..
Mitglied: bastla
22.03.2012 um 21:23 Uhr
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 ...
Bitte warten ..
Mitglied: funcarver
22.03.2012 um 21:32 Uhr
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.....
Bitte warten ..
Mitglied: Biber
22.03.2012 um 22:17 Uhr
Moin Pfannenkratzer,

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.

Ü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
Bitte warten ..
Mitglied: bastla
22.03.2012 um 22:26 Uhr
@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 "&&" (und auch wenn, was ja genügen würde, nur mit "&" verknüpft wird, ändert das nix), das mit in der "sz"-Datei landet - mit
for /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz&& for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i"
oder mit
01.
for /f "delims=" %%i in ('dir /s /b %~2') do ( 
02.
    echo "%%~pnxi">%temp%\sz 
03.
    for %%j in (%temp%\sz) do call :EchoIfGTR %%~zj "%%~i" 
04.
)
stimmt's ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
23.03.2012 um 19:55 Uhr
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:
01.
  
02.
:: so kommt ein Leerzeichen zuviel mit in die Temp-Datei "sz" 
03.
for /f "delims=" %%i in ('dir /s /b %~2') do echo "%%~pnxi">%temp%\sz && for %%j .......... 
04.
 
05.
:: so, mit dem echo-Befehl in Klammern, nicht mehr 
06.
for /f "delims=" %%i in ('dir /s /b %~2') do (echo "%%~pnxi">%temp%\sz) && for %%j ....
Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Userverwaltung
Servergespeichertes Profil - Pfad ausfindig machen (6)

Frage von staybb zum Thema Windows Userverwaltung ...

VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...