43344
Goto Top

Zeilenlänge per Batch ermitteln

Ich stehe vor folgendem Problem:

Unsere lieben Nutzer haben es geschafft, im Gruppenlaufwerk Pfad/Dateinamen mit einer Länge von bis zu 600 Zeichen zu erzeugen. Dabei legt sich aber meine Sicherung auf den Rücken, wegen der Überlänge. Wären das nur ein paar Verzeichnisse, wär das nicht so schlimm, aber ich hab 453.918 Dateien liegen ....

Bisher muss ich über:

dir /S /B >list.txt

Textdatei auf Webserver schieb

for Schleife, die Zeilenweise nen wc-l macht und in ne neue Datei schreibt.

Geht das nicht auch einfacher, also direkt unter Windows/DOS? Ich kann den Webserver leider nur noch ein paar Tage nutzen, dann geht der vom Netz face-sad

Content-Key: 51394

Url: https://administrator.de/contentid/51394

Printed on: April 24, 2024 at 16:04 o'clock

Member: bastla
bastla Feb 12, 2007 at 08:03:35 (UTC)
Goto Top
Hallo Stylewalker und willkommen im Forum!

Geht das nicht auch einfacher, also direkt unter Windows/DOS?
Diese Frage lässt sich oft mit einem mehr oder weniger überzeugten "Ja" beantworten, wenn einmal geklärt ist, was das "das" denn nun eigentlich sein soll - dem Titel Deines Beitrages zufolge hätte ich nicht unbedingt auf Probleme mit Pfadlängen getippt.

Also, was soll die von Dir angestrebte Lösung konkret leisten?

Grüße
bastla
Mitglied: 43344
43344 Feb 12, 2007 at 08:59:17 (UTC)
Goto Top
Ok, Wortfindungsstörung am frühen morgen:

Ich möchte die Ausgabe von "dir /S /B >liste.txt" zeilenweise einlesen und überprüfen, welche Zeilen (kompletter Pfad+Dateiname) mehr als 254 Zeichen beinhalten und diese in eine weitere Datei schreiben.

Ich hoffe, so kann mans besser verstehen ...

Gruß
Member: bastla
bastla Feb 12, 2007 at 10:17:14 (UTC)
Goto Top
Hallo Stylewalker!

Yep, besser so.

Versuchen wir es mit einem VBScript:
'FindLongLines.vbs  
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")  
Set oIn = fso.OpenTextFile(WScript.Arguments(0), 1)
Do While Not oIn.AtEndOfStream
	sLine = oIn.ReadLine
	If Len(sLine) > 254 Then WScript.Echo sLine
Loop
oIn.Close
Speichern zB unter "C:\Scripts\FindLongLines.vbs", Aufruf mit
cscript //nologo "C:\Scripts\FindLongLines.vbs" liste.txt > LongLines.txt 
Das Script beschränkt sich auf das Nötigste (keine Parameterprüfung, ...).

Grüße
bastla
Mitglied: 43344
43344 Feb 12, 2007 at 11:12:15 (UTC)
Goto Top
Feini, genau danach hab ich gesucht! Vielen Dank!! face-smile
Member: Biber
Biber Feb 12, 2007 at 11:44:40 (UTC)
Goto Top
...und eine Batchvariante dazu steht im Bereich "Batch & Shell" unter Tutorials.

[Workshop Batch for Runaways I: FindLongPath - Bedenklich lange Pfade finden]

Gruss
Biber