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 Batchdatei, welche von einem Netzwerkpfad die genaue Zeichenanzahl ausgibt

Mitglied: cyberdevil0815

cyberdevil0815 (Level 1) - Jetzt verbinden

07.11.2011 um 14:22 Uhr, 3136 Aufrufe, 9 Kommentare

Batch, welcher eine Pfadtiefe je Zeile ermittelt und den Wert hinter den Pfad schreibt

Hallo zusammen,

bei meinen Backup ist mir aufgefallen, dass nicht mehr alle Dateien gesichert werden. Nun möchte ich ein Batchskript schreiben, welches für einen Netzwerpfad einen vordefinierten Ordner ausliest, anhand des Kriteriums "abPfadLängeX" (Beispiel 200 Zeichen) und die gefundenen Pfade in eine Datei schreibt, erzeugen.

Mein bisheriger Batch sieht so aus, hier werden an einem Bestimmten Ordner (G:\Projekte) die Verzeichnisse, als auch Unterverzeichnisse ausgegeben und in einen Datei weggespeichert. Wenn es die Datei schon gibt, wird die vorherige Log Datei gelöscht und eine neue erzeugt. Soweit so gut, nun soll das Skript um die Pfadtiefe erweitert werden.

Wie macht man das sinnvollerweise?

01.
@echo off & setlocal
02.
if exist C:\Pfadtiefe\summary.txt del C:\Pfadtiefe\summary.txt
03.
for %%i in (g:\projekte\) do (
04.
	pushd "%%i"
05.
	for /f "delims=" %%a in ('dir /l /n /s /b ') do echo \%%a >>C:\Pfadtiefe\summary.txt
06.
	popd
Mitglied: colinardo
07.11.2011 um 15:13 Uhr
erstelle dir ein VBS-Script mit folgendem Inhalt, und speichere z.B. als check_chars.vbs
01.
dim quelle,ziel,anzahl_zeichen
02.
quelle = Wscript.Arguments(0)
03.
anzahl_zeichen = 200
04.
set objFS = Wscript.CreateObject("Scripting.FileSystemObject")
05.
set sumfile = objFS.OpenTextFile(quelle, 1)
06.
while not sumfile.AtEndOfStream
07.
	line = sumfile.ReadLine
08.
	if len(line) > anzahl_zeichen then
09.
		wscript.echo line
10.
	end if
11.
wend
12.
sumfile.close()
dann fügst du ans Ende deiner Batch folgende Zeile ein:
01.
cscript //nologo check_chars.vbs [PFAD ZUR SUMMARY.TXT]
Als Ergebnis erscheinen die Zeilen mit mehr als 200 Zeichen in der Shell. Die Ausgabe kannst du dann an in eine Datei leiten...
Bitte warten ..
Mitglied: cyberdevil0815
07.11.2011 um 15:21 Uhr
@Softmeister, erst einmal vielen Dank, mit *.vba hab ich noch weniger Plan als mit Batch auf DOS Ebene.

Hast Du hierfür auch eine Lösung?!
Bitte warten ..
Mitglied: colinardo
07.11.2011 um 16:46 Uhr
Du musst noch hinter 'setlocal' enabledelayedexpansion hinzufügen.
Den Teil zwischen :loop und goto :eof kannst du ans Ende deiner Batch stellen. Dieser Teil fungiert quasi als function der mit %%a als Parameter aufgerufen wird. Die Performance des Scripts ist hiermit jedoch nicht so gut, da jeder Buchstabe eines Pfades gezählt wird. Die Pfade die länger als 200 Zeichen sind werden in die Datei "output.txt" geschrieben.
01.
@echo off & setlocal enabledelayedexpansion
02.
for /f "delims=" %%a in ('dir /l /n /s /b ') do (call :loop "%%a")
03.

04.
:loop
05.
set /a Nr=0
06.
set pfad=%1
07.
set pfad=%pfad:~1,-1%
08.
:start
09.
set "char=!pfad:~%Nr%,1!"
10.
if "%char%"=="" goto :ende
11.
set /a Nr+=1
12.
goto :start
13.
:ende
14.
if %Nr% GTR 200 (echo %pfad% >>output.txt)
15.
goto :eof
Grüße Uwe
Bitte warten ..
Mitglied: Biber
07.11.2011 um 17:05 Uhr
Moin cyberdevil,

vor einiger Zeit hatte ich mal in einem Tutorial ein paar Skizzen dazu gemacht.
Workshop Batch for Runaways - Part I - Beispiel FindLongPath.Bat Bedenklich lange Pfade finden.

Wahrscheinlich nicht ganz ohne Anpassungen verwendbar, aber hilft vielleicht.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
07.11.2011 um 17:15 Uhr
@Softmeister
Wieso erstes und letztes Zeichen des Pfades eliminieren?

Etwas kürzer (und ohne "delayedExpansion") wäre übrigens:
01.
set "char=%pfad%"
02.
:start
03.
set /a Nr+=1
04.
set "char=%char:~1%"
05.
if defined char goto :start
Dabei wird zwar von einer Mindestlänge von einem Zeichen ausgegangen, aber bei einem per "for" erstellten/übergebenen Variableninhalt für %pfad% nehme ich das Risiko ...

Grüße
bastla
Bitte warten ..
Mitglied: cyberdevil0815
08.11.2011 um 09:03 Uhr
Guten morgen Administratoren - Forum,

ich habe meinen Code nun so stehen:

01.
@echo off & setlocal
02.
if exist C:\Pfadtiefe\summary.txt del C:\Pfadtiefe\summary.txt
03.
for %%i in (c:\Dell) do (
04.
	pushd "%%i"
05.
	for /f "delims=" %%a in ('dir /l /n /s /b ') do echo \%%a >>C:\Pfadtiefe\summary.txt
06.
	popd
07.
)
08.

09.

10.
for /f "delims=" %%i in ('dir /l /n /s /b ') do (call :loop "%%a")
11.

12.
:loop
13.
set "char=%pfad%"
14.
:start
15.
set /a Nr+=1
16.
set "char=%char:~1%"
17.
if defined char goto :start (echo %pfad% >> output.txt ) 
Resultat:
Ich erhalte eine Summary mit den entsprechenden Dateien bzw. Pfaden, was soweit in Ordnung ist (dient an dieser Stelle einem anderen Zweck).
Ich erhalte eine Output Datei, jedoch ohne irgendeinen Inhalt. Eigentlich sollte ich hier das gleiche sehen, wie in der Summary, jedoch mit der Zeichenlänge als Erweiterung.

By the way:
Das Tutorial habe ich mir durchgelesen, und wollte es für meine Zwecke modifizieren. Ergebnis präsentiere ich auch noch. Ich muss den Quellcode bzw. die Variablen noch verstehen bzw. korrekt zuordnen.
Bitte warten ..
Mitglied: colinardo
08.11.2011 um 09:10 Uhr
Der Mischmasch kann nicht funktionieren, Bau das Script so wie ich das oben geschrieben habe, das funktioniert 100% (getestet). Der Output meiner Version gibt aber nur die Zeilen aus, nicht die Länge des Pfades. Das lässt sich aber leicht ergänzen mit der Zeile
01.
...
02.
:ende
03.
if %Nr% GTR 200 (echo %pfad% ## Length %Nr% >>output.txt)
04.
goto :eof
Bitte warten ..
Mitglied: bastla
08.11.2011 um 09:22 Uhr
Hallo cyberdevil0815!

Es fehlt (vor Zeile 14) ein
set /a Nr=0
und die Zeile 17 müsstest Du aufteilen in
01.
if defined char goto :start
02.
echo %pfad% >> output.txt
wobei die Zeile 2 durch Softmeisters Zeile 2 ersetzt werden sollte ...

Grüße
bastla
Bitte warten ..
Mitglied: cyberdevil0815
09.11.2011 um 10:16 Uhr
Hallo zusammen,

an dieser Stelle vielen vielen Dank für Hilfe und Support.

Läuft alles wie gewünscht:

01.
@echo off & setlocal
02.
if exist C:\Pfadtiefe\summary.txt del C:\Pfadtiefe\summary.txt
03.
for %%i in (D:\daten\Fs1\PROJEKTE\) do (
04.
	pushd "%%i"
05.
	for /f "delims=" %%a in ('dir /l /n /s /b ') do echo \%%a >>C:\Pfadtiefe\summary.txt
06.
	popd
07.
)
08.

09.
@echo off & setlocal enabledelayedexpansion
10.
for /f "delims=" %%a in ('dir /l /n /s /b ') do (call :loop "%%a")
11.

12.
:loop
13.
set /a Nr=0
14.
set pfad=%1
15.
set pfad=%pfad:~1,-1%
16.
:start
17.
set "char=!pfad:~%Nr%,1!"
18.
if "%char%"=="" goto :ende
19.
set /a Nr+=1
20.
goto :start
21.
:ende
22.
@echo off & setlocal
23.
if %Nr% GTR 100 (echo %pfad% ## Length %Nr% >>output.txt) 
24.
goto :eof
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dir auf Netzwerkpfad
gelöst Frage von webbuddaBatch & Shell8 Kommentare

Hi, wir wollte mir mit einem batch mit "dir-Befehl" die Verzeichnisse eines Netzwerkpfades in eine Datei leiten. Habe einfach ...

Windows Netzwerk
Netzwerkpfad per Batch-Datei
gelöst Frage von AveiroCR7Windows Netzwerk6 Kommentare

Guten Abend, ich will gerne einen Netzwerkpfad mit anderen Anmeldedaten öffnen, dazu wollte ich gerne ein Batch-Datei erstellen. Aber ...

Microsoft Office
Was genau bedeutet
Frage von ImTrainingMicrosoft Office2 Kommentare

Guten Morgen, Weiß einer was diese Fehlermeldung zu bedeuten hat? Sie taucht in einem Programm namens Nova Nota auf ...

Windows 10
Dateizuordnung genau steuern
Frage von SunnyRainyDayWindows 101 Kommentar

Hallo Zusammen, Es geht um die Dateizuordnung. Benutzer sollen nur bestimmte Dateitypen mit vorgegebenen Appliktionen verknüpfen dürfen. Das hab ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 13 StundenInternet2 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 17 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Switche und Hubs
Medienkonverter mit 12 oder 24 Ports gesucht
Frage von wmuellerSwitche und Hubs24 Kommentare

Guten Morgen, ich bin auf der Suche nach einem größeren Medienkonverter, der "stumpf" 1:1 die Ports auf über ein ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell21 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...