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

Netzlaufwerk nach zu langen Pfaden durchsuchen

Frage Entwicklung Batch & Shell

Mitglied: Zendara

Zendara (Level 1) - Jetzt verbinden

11.03.2013, aktualisiert 16:54 Uhr, 2237 Aufrufe, 8 Kommentare

Hallo,

wir haben in der Firma mehrere Netzlaufwerke freigegeben wo unsere Mitarbeiter Ordner und Dateien anlegen können.
Jetzt stehe ich vor dem Problem, dass wir einen neuen Server bekommen haben und ich den ganzen Inhalt vom alten Server auf den neuen kopieren muss.

Leider funktioniert weder mit Windows kopieren und einfügen noch mit TotalCommander der Kopiervorgang richtig und es werden Dateien ausgelassen. Selbst wenn TotalCommander sagt, dass alle Dateien gleich sind kommt kommt beim Ordnervergleich der Eigenschaften ein anderes Ergebnis.

Das Problem meiner Ansicht nach sind zu lange Dateipfade die ich jetzt irgendwie rausfiltern will.
Ich habe aber keine Ahnung wie so eine Batchdatei aussehen soll.

01.
@echo off 
02.
title Suche nach zu langen Dateipfaden 
03.
cd\ 
04.
cls 
05.
 
06.
echo ------------------------------------------------------------------- 
07.
echo Netzlaufwerk auswählen 
08.
echo ------------------------------------------------------------------- 
09.
echo    (1) Laufwerk P 
10.
echo    (2) Laufwerk Q 
11.
echo    (3) Laufwerk R 
12.
... 
13.
echo    (0) Exit 
14.
set /p _choice=Aktion waehlen: 
15.
 
16.
if %_choice%==1 goto goto 1 
17.
if %_choice%==2 goto goto 2 
18.
if %_choice%==3 goto goto 3 
19.
... 
20.
if %_choice%==0 goto Exit 
21.
 
22.
:Exit 
23.
exit 
24.
 
25.
:1 
26.
set LW=P 
27.
goto Auswertung 
28.
 
29.
:2 
30.
set LW=Q 
31.
goto Auswertung 
32.
 
33.
:3 
34.
set LW=R 
35.
goto Auswertung 
36.
 
37.
... 
38.
 
39.
:Auswertung 
40.
Hier benötige ich einen Befehl der mir Laufwerk %LW% durchsucht und alle zb. Ordner die eine längere Struktur haben als zb. 240 Zeichen in eine Textdatei ausgibt. 
41.
 
42.
pause 
43.
 
44.
goto Exit 
45.
 

Hat jemand eine Idee was ich unter :Auswertung reinschreiben müsste um die Zeichenlänge der Ordnerstruktur auswerten zulassen?

Bin für jeden Tip dankbar

lg
Zendara


Mitglied: DerWoWusste
11.03.2013, aktualisiert um 13:51 Uhr
Hi.

Ist es ein Datenbereich auf einer eigenen Partition? Dann mach es Dir einfach und zieh ein Image (falls Du einen Zwischenspeicher hast) oder klone, falls Du keinen ausreichend großen Zwischenspeicher hast.
Bitte warten ..
Mitglied: Zendara
11.03.2013 um 14:06 Uhr
Hallo es handelt sich um 2 Raidsysteme in 2 NAS Server. Ich würde gerne das Problem beim Schopf packen und die Langen Dateiändungen eliminieren.

Leider habe ich grad noch zusätzliche Probleme bekommen. Bin jetzt mit den meisten Netzlaufwerken fertig und der neue Server fängt zum piepen an weil eine Festplatte vom Raid defekt ist *schrei*
Hab zum Glück beim Kauf der NAS gleich eine zusätzliche HDD bestellt falls in weiter Zukunft mal eine Festplatte ausfällt. -.-
Jetzt mache ich grad eine Sicherung und in folge werde ich die Daten wieder auf die neue syncronisieren sobald ich sie getauscht habe.

Aber nochmal zurück zu deiner Antwort. Auf den beiden NAS System kann ich keinen Monitor anhängen um ein Image per zb. Bootstick zuziehen oder gibts da noch eine andere Möglichkeit?

lg
Zendara
Bitte warten ..
Mitglied: DerWoWusste
11.03.2013 um 14:18 Uhr
Du sagst leider nichts darüber, wie das NAS angebunden ist. Wenn ISCSI, könntest Du problemlos ein Image ziehen, auch im laufenden Betrieb.
Bitte warten ..
Mitglied: Lochkartenstanzer
11.03.2013 um 15:02 Uhr
Zitat von DerWoWusste:
Du sagst leider nichts darüber, wie das NAS angebunden ist. Wenn ISCSI, könntest Du problemlos ein Image ziehen, auch im
laufenden Betrieb.

Image im Laufenden Betrieb? Da sind fast immer Inkonsitenzen vorprogrammiert, es gibt nur wenige Filesysteme mit denen man sowas wagen kann und auch da muß man genau wissen was man tut. Sowas kann man nur machen, wenn das Filesystem wie einen snapshot-funktion hat, wie z.B. VSS unter windows bei NTFS.
Bitte warten ..
Mitglied: Zendara
11.03.2013 um 16:49 Uhr
Bei der alten NAS handelt es sich um einen Snap Server 4500 mit RAID 5 ohne ISCSI die neue ist eine Synology RS812.
Es wurden auch Netzlaufwerkfreigaben von anderen alten Linux und Windows Servern auf den neuen Server ausgelagert.

Mir geht es mit der Batch Datei aber um ein eigentlich für mich viel wichtigere Aufgabe.

1. Die langen Dateipfade zu ermitteln und zu korrigieren
2. Nach der Korrektur sollte ein fehlerfreier Zugriff auf die Daten der Netzlaufwerke möglich sein. Ohne mit irgendwelchen Trix die Daten zu syncronisieren.

Wenn die Pfade eine annehmbare Länge haben, ist ein fehlerfreies kopieren möglich. (hoffentlich )

Ich würde es gerne vermeiden die alte (fehlerhafte Struktur) auf den neuen Server per Image zu kopieren sondern zuerst etwas Ordnung in das Chaos bringen.

Als Beispiel welche Ordnerpfade bei uns so rumgeistern.

Q:\CERTIFICATES_HOMOLOGATIONS_Firma\Länderzuortnung\_ALLGEMEIN\_Allg. Schreiben, Briefe\Nutzung der erteilten Zulassungsanträge\DE_Zulassungsstelle_Antwort auf Schreiben__Nutzung der erteilten Zulassungsanträge für Kopierstationen.docx

Die meisten Pfade sind zum Glück in Ordnung aber bei manches Strukturen kommt dann sowas raus wie oben.

lg
Zendara
Bitte warten ..
Mitglied: bastla
11.03.2013 um 18:59 Uhr
Hallo Zendara!

Vielleicht hilft dir Bibers Workshop Batch for Runaways - Part I - Beispiel FindLongPath.Bat Bedenklich lange Pfade finden ...

Grüße
bastla
Bitte warten ..
Mitglied: Zendara
12.03.2013 um 17:00 Uhr
Hallo,

danke das ist genau das was ich suche!
Ich kann zwar mit den meisten Befehlen nichts anfangen, aber es funktioniert so ungefähr.

Morgen schau ich mir den Batch nochmal genauer an aber ich bin sehr zuversichtlich

Danke nochmal für den Link.

lg
Zendara
Bitte warten ..
Mitglied: Zendara
18.03.2013 um 09:12 Uhr
Ich hab mir jetzt einen Batch zusammengeschnipselt der mir die Pfade auflistet die nicht passen.
Jetzt besteht nur noch ein kleines Darstellungsproblem.

Bsp.
q:\ordner1\ordner2\ordner3\Datei1.txt

wenn jetzt die Dateilänge bis Ordner3 passt und nur der Name der Datei.txt zulange ist bekomme ich folgendes Ergebniss.

q:\ordner1
q:\ordner1\ordner2
q:\ordner1\ordner2\ordner3
q:\ordner1\ordner2\ordner3\Datei1.txt

Die Erstellte Datei die mir alle Pfade Auflistet beinhaltet jetzt über 4000 Zeilen mit der oben genannten Strucktur die leider recht unübersichtlich ist und ungeordnet.

Kann man sich nur die Zeile anzeigen lassen die wirklich über die von mir vorgegebene Zeichen länge geht?

01.
@echo off 
02.
title Suche nach zu langen Dateipfaden 
03.
cd\ 
04.
set lang=240 
05.
 
06.
cls 
07.
echo ------------------------------------------------------------------- 
08.
echo Netzlaufwerk auswählen 
09.
echo ------------------------------------------------------------------- 
10.
echo. 
11.
echo Überprüft die Länge ab %lang% Zeichen 
12.
echo. 
13.
echo    (1) Laufwerk P 
14.
echo    (2) Laufwerk Q 
15.
echo    (3) Laufwerk R 
16.
echo    (0) Exit 
17.
echo. 
18.
set /p _choice=Aktion waehlen: 
19.
 
20.
if %_choice%==1 goto Laufwerk_P 
21.
if %_choice%==2 goto Laufwerk_Q 
22.
if %_choice%==3 goto Laufwerk_R 
23.
if %_choice%==0 goto exit 
24.
 
25.
 
26.
:exit 
27.
exit 
28.
 
29.
:Laufwerk_P 
30.
set LW=p: 
31.
goto Auswertung 
32.
 
33.
:Laufwerk_Q 
34.
set LW=q: 
35.
goto Auswertung 
36.
 
37.
:Laufwerk_R 
38.
set LW=r: 
39.
goto Auswertung 
40.
 
41.
 
42.
:Auswertung 
43.
::---------begin ofFindLongPath.bat ------- 
44.
:: Aufruf FindLongPath [Lw:/Pfad] [Pfadlänge] -- Default Lw:/Pfad=%temp% -- Default Pfadlänge = 50 
45.
::@ECHO off & SETLOCAL ENABLEEXTENSIONS 
46.
SETLOCAL ENABLEEXTENSIONS 
47.
SET usedvars=tmpdatei reportdatei p1 p1masked p2 x YN PAUSE_D ECHO_D  
48.
if Defined DebugMyBatches ((set ECHO_D=@ECHO) & (set PAUSE_D=pause) ) else ( set ECHO_D=REM) 
49.
REM call :Debugshow_vars "Am Start der Batchdatei" ...bei Bedarf das REM entfernen 
50.
CALL :paramcheck %1 %2 
51.
:: Nicht einfach weiterlesen... hast Du geguckt, was in :paramcheck passiert??? 
52.
DIR %p1% /aD /b /s >%tmpdatei% 
53.
IF exist "%reportdatei%" del "%reportdatei%"  
54.
SET /a p2=%p2%-1 
55.
SETLOCAL EnableDelayedExpansion 
56.
FOR /F "delims=" %%i in (%tmpdatei%) do (set "x=%%i") && if "!x:~%p2%,10!" GTR "@" @echo %%i >>%reportdatei% 
57.
 
58.
IF EXIST "%reportdatei%" ( 
59.
     ECHO Report wurde gespeichert als %reportdatei%.    
60.
     ECHO - Reportdatei vom %date% -- Alle Verzeichnisse ^>%p2% auf %p1% -->>"%reportdatei%"  
61.
     ECHO - Reportdatei "%reportdatei%" -->>"%reportdatei%" 
62.
     SET /p YN="Auf %p1% wurden Pfade mit Länge größer %p2% gefunden. Anzeigen (J/N?) " 
63.
     IF /i "!YN!"=="J" TYPE "%reportdatei%" |MORE      
64.
) ELSE ( 
65.
     ECHO Keine Pfade länger als %p2% Zeichen im Pfad %p1% gefunden. 
66.
67.
ENDLOCAL 
68.
CALL :DebugShow_vars 
69.
::CALL :cleanup 
70.
GOTO :eof 
71.
:: ------------------- 
72.
::::::::::::  ParamCheck ... Hier werden die Parameter %1 und %2 geprüft daraus %p1% und %p2% abgeleitet. 
73.
:: Param 1 : Laufwerksbuchstabe oder Verzeichnis; Default %temp% 
74.
:::::::::::: Dieser Parameter wird als Substring in den Variablen %tmpdatei% und %reportdatei% verwendet  
75.
:::::::::::: Dafür werden ":" und "\" durch "$" und"_" ersetzt, um einen gültigen Dateinamen zu bilden. 
76.
:::::::::::: dazu Zwischenspeicherung in Variable %p1% und %p1masked%  
77.
:::::::::::: Syntax dazu siehe SET /? und dort.. %PATH:str1=str2% 
78.
:: Param 2:: zu prüfende Länge der Verzeichnisse ... Default 50 
79.
 
80.
:ParamCheck 
81.
IF (%1)==() (SET p1=%temp%) ELSE (SET p1=%1) 
82.
REM nächste Zeile bipede-Variante - siehe unten 
83.
IF (%1)==() (SET p1=%LW%) ELSE (SET p1=%1) 
84.
IF (%2)==() (SET /a p2=%lang%) ELSE (SET /a p2=%2) 
85.
SET p1masked=%p1::=$% 
86.
SET p1masked=%p1masked:\=_% 
87.
%ECHO_D% p1-^>p1masked ist %p1%-^>%p1masked%; p2 ist %p2% 
88.
::SET "tmpdatei=%temp%\%computername%_%p1masked%_All.lst" 
89.
::SET "Reportdatei=%temp%\%computername%_%p1masked%_PfadeGTR%p2%.lst" 
90.
SET "tmpdatei=e:\%computername%_%p1masked%_All.lst" 
91.
SET "Reportdatei=e:\%computername%_%p1masked%_PfadeGTR%p2%.lst" 
92.
CALL :Debugshow_vars "Nach Var-Setzen" 
93.
goto :eof 
94.
:: -------------------- 
95.
:DebugShow_vars 
96.
IF DEFINED DebugMyBatches ( 
97.
SETLOCAL ENABLEDELAYEDEXPANSION 
98.
FOR %%i IN (%usedvars%) DO (ECHO [%~1] Variable %%i="!%%i!" )  
99.
ENDLOCAL 
100.
PAUSE 
101.
102.
GOTO :eof 
103.
:: ----------------- 
104.
:cleanup 
105.
%ECHO_D% in Subroutine :Cleanup 
106.
::IF EXIST "%tmpdatei%" (del "%tmpdatei%") & %ECHO_D% Datei %tmpdatei% wird gelöscht. 
107.
FOR %%i IN (%usedvars% usedvars) DO @IF DEFINED %%i ( 
108.
  (IF DEFINED DebugMyBatches echo %%i wird freigegeben) & (SET %%i=)) 
109.
 
110.
GOTO :eof 
111.
::---------End of FindLongPath.bat -------

Danke lg
Zendata
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Windows 10
Surface 4 Pro Netzlaufwerk verbinden (4)

Frage von Yannosch zum Thema Windows 10 ...

Windows Netzwerk
Netzlaufwerk offline verfügbar für Mac (1)

Frage von PharIT zum Thema Windows Netzwerk ...

Windows 10
VPN Netzlaufwerk leer (4)

Frage von Edaseins zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...