Top-Themen

Aktuelle Themen (A bis Z)

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, 4311 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 ..
Ähnliche Inhalte
Batch & Shell
Powershell - Pfade und Dateien vergleichen nicht möglich da Pfad oder Dateiname zu lang
Beitrag von 9 Kommentare

Frage von oliver12 zum Thema Batch & Shell

Microsoft Office
Text in Zahlen umwandeln
Beitrag von

Tipp von logische zum Thema Microsoft Office

Voice over IP
Freeswitch Sammelrufnummer besetzt zeichen
Beitrag von 1 Kommentar

Frage von frephisten zum Thema Voice over IP

JavaScript
Javascript rechnen mir sehr sehr großen Zahlen
Beitrag von 3 Kommentare

Frage von it4baer zum Thema JavaScript

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Beitrag von 4 Kommentare

Anleitung von colinardo zum Thema MikroTik RouterOS

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Beitrag von

Information von BassFishFox zum Thema Sicherheit

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Beitrag von 5 Kommentare

Information von admtech zum Thema Administrator.de Feedback

Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10