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

Bug im Script - wer kennt sich aus?

Frage Entwicklung Batch & Shell

Mitglied: -kuwi-

-kuwi- (Level 1) - Jetzt verbinden

20.07.2007, aktualisiert 23:10 Uhr, 4153 Aufrufe, 8 Kommentare

Hallo!

Ich beziehe mich auf folgenden Thread: verzeichnisstruktur auslesen und ordnergroesse anzeigen

Bug: Wenn im Verzeichnispfad ein &-Zeichen vorkommt, so steigt das Script aus..

Da ich dies nicht vermeiden kann und ich das Script leider auch nicht ganz interpretieren kann, wollte
ich fragen ob mir hier jemand helfen kann. Wie muß ich das Script abändern, dass auch &-Zeichen
im Pfad verarbeitet werden?

Schonmal vielen Dank im Vorraus!

PS: Schönes WE!
Mitglied: bastla
20.07.2007 um 17:06 Uhr
Hallo -kuwi-!

Wenn Du in der allerletzten Zeile, ganz am Ende, "%~f1" unter Anführungszeichen setzt, sind diese zwar auch in der Ausgabe enthalten, aber der Batch müsste laufen.

Alternativ könntest Du alle Zeilen nach der alleinstehenden ")" (also ab Zeile 9) durch die folgenden ersetzen:
01.
if not defined DirSize goto :eof 
02.
set "space20=____________________" 
03.
set "Pfad=%~f1" 
04.
set "Pfad=%Pfad:&=^&%" 
05.
set "Dirsize=%space20%%Dirsize%" 
06.
echo %DirSize:~-15%    %Pfad%
Grüße
bastla
Bitte warten ..
Mitglied: -kuwi-
20.07.2007 um 22:09 Uhr
Danke für deine Hilfe - jedoch bingt die Änderung nichts..

Es existiert am Server z.B. ein Verzeichnis mit dem Namen "K&K".
Sobald das Batchfile an diese Position kommt, bricht es immer noch mit der Meldung
' "&" ist syntaktisch an dieser Stelle nicht verarbeitbar. ' ab..

Komischerweise kommt auch hin und wieder die Meldung
' Der Befehl "und" ist entweder falsch geschrieben oder konnte nicht gefunden werden. '
Das Script läuft jedoch weiter. Anscheinend hat es Probleme mit langen Verzeichnisnamen, die
zudem noch Leerzeichen enthalten?!?
Bitte warten ..
Mitglied: -kuwi-
20.07.2007 um 22:37 Uhr
Hab mittlerweile rausgefunden, dass der Code Probleme macht:
01.
if not [%%j]==[] goto :eof


Weis aber noch keine Lösung dafür..
Bitte warten ..
Mitglied: bastla
20.07.2007 um 22:41 Uhr
Hallo -kuwi-!

Hab's auch gerade gesehen. Wie wäre es mit
01.
if not "%%j"=="" goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: bastla
20.07.2007 um 22:45 Uhr
... und danach auch gleich noch
01.
If exist "%~1" (  
Grüße
bastla
Bitte warten ..
Mitglied: bastla
20.07.2007 um 22:51 Uhr
... bzw noch ein paar Anführungszeichen anstatt [] (nur, um sie durchgängig zu verwenden):

01.
::------snipp Dirsize.bat  ---developed on administrator.de 2006/2007 
02.
:: Parameter1 Verzeichnisname [opt Par2: /R wie Rekursiv] [opt. par3 =Ebenen]@echo off & setlocal & Set DIRCMD= 
03.
IF /i "%2"=="/R" for /R "%~1" %%a in (.) do @%0 "%%a" %3 
04.
if not "%2"=="" Set /a "Level=%2+2" 
05.
if defined level for /f "delims=\ tokens=1,%level%" %%i in ("%~1") do if not "%%j"=="" goto :eof 
06.
If exist "%~1" (    
07.
  for /f "tokens=3" %%c in ('dir "%~1" /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c 
08.
09.
if not defined DirSize goto :eof 
10.
set "space20=____________________" 
11.
set "Pfad=%~f1" 
12.
set "Pfad=%Pfad:&=^&%" 
13.
set "Dirsize=%space20%%Dirsize%" 
14.
echo %DirSize:~-15%    %Pfad% 
15.
::------snapp Dirsize.bat
In dieser Version läuft es bei mir.

Grüße
bastla

[Edit] Kommentar angepasst. [/Edit]
Bitte warten ..
Mitglied: -kuwi-
20.07.2007 um 23:00 Uhr
So - SO läuft der Code bei mir stabil..


01.
::------snipp Dirsize.bat  ---developed on administrator.de 2006/2007 
02.
:: Parameter1 Verzeichnisname [opt Par2: /R wie Rekursiv] [opt. par3 =Ebenen] 
03.
@echo off & setlocal & Set DIRCMD= 
04.
IF /i [%2]==[/R] for /R "%~1" %%a in (.) do @%0 "%%a" %3 
05.
if not [%2]==[] Set /a "Level=%2+2" 
06.
if defined level for /f "delims=\ tokens=1,%level%" %%i in ("%~1") do if not [%%j]==[] goto :eof 
07.
If exist ""%1"" (    
08.
  for /f "tokens=3" %%c in ('dir "%~1" /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c 
09.
10.
if not defined DirSize goto :eof 
11.
:: In Space20 stehen 20 Leerzeichen - hier im Forum besser darstellbar als 20 Unterstriche 
12.
set "space20=____________________" 
13.
set "Pfad=%~f1" 
14.
set "Pfad=%Pfad:&=^&%" 
15.
set "Dirsize=%space20%%Dirsize%" 
16.
echo %DirSize:~-15%    %Pfad% 
17.
::------snapp Dirsize.bat
Bitte warten ..
Mitglied: bastla
20.07.2007 um 23:10 Uhr
Hallo -kuwi-!

""%1"" würde ich als Overkill bezeichnen ...

Wenn Du die Grundstriche nicht magst, könntest Du zumindest, wie es der Variablenname auch schon vorgibt, 20 Leerzeichen verwenden - ansonsten sind die Zeilen
01.
set "space20=" 
02.
:: und auch 
03.
set "Dirsize=%space20%%Dirsize%"
schlicht entbehrlich.

Grüße
bastla

[Edit] Sorry, war aufgrund der mangelnden Formatierung mit < code> und < /code> (jeweils ohne Leerzeichen) nicht zu erkennen, dass die "_" noch da sind ... [/Edit]
Bitte warten ..
Ähnliche Inhalte
Router & Routing
Packet Tracer und RIP BUG? (3)

Frage von Protected zum Thema Router & Routing ...

Windows 10
Windows 10: Microsoft behebt DHCP-Bug (1)

Link von runasservice zum Thema Windows 10 ...

Humor (lol)
Wer kennt das nicht (5)

Frage von Knorkator zum Thema Humor (lol) ...

Windows Userverwaltung
gelöst Kennt jemand ein Berechtigungstool wie 8MAN? (1)

Frage von ALucaK zum Thema Windows Userverwaltung ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (22)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...