primusvs
Goto Top

Programm oder Script gesucht was Verzeichniss- und Dateinamen bis 256 Zeichen auslesen kann.

Hallo Forenmitglieder,

ich suche ein Programm oder Script (Batch Datei) was in der Lage ist von einem Laufwerk z.B. C:\ oder Verzeichnis C:\Windows mir alle Verzeichniss- und Dateinamen nach einen Scann anzeigt welche z.B mehr als 250 Zeichen erhalten..

Die suche hier im Forum brachte leider keinen Erfolg.


Beispiele:


abcdefghij++++++++++++das sind jetzt 251 Zeichen++++++++++++++++++++++.doc
123456*das sind insgesamt 252 Zeichen?????.txt
12343456908765765445667**das sind insgesamt 254 Zeichen~~~~~~~~~~~~~.xls

primusvs_Bla_BLA_BLA_das soll ein Verzeichnisse sein mit insgesamt 253 Zeichen


Schöne Grüße


primusvs

Content-ID: 116585

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

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

bastla
bastla 22.05.2009, aktualisiert am 18.10.2012 um 18:38:16 Uhr
Goto Top
Hallo primusvs!

Sollte eigentlich (als Standardwerk face-smile) zu finden sein: Batch for Runaways - Part 1 - Beispiel: FindLongPath.Bat Bedenklich lange Pfade finden (obwohl: Biber hat ja die Angewohnheit, "Verzeichnis" nur mit einem "s" zu schreiben - vielleicht lag's daran ... face-wink)

Grüße
bastla
77559
77559 22.05.2009 um 14:51:28 Uhr
Goto Top
Hallo primusvs,

Im Untershied zum Biber Tutorial hier eine Quick and Dirty Lösung ohne temporäre Datei.

Unklar ist ob du separat Pfad / Dateiname oder die Gesamtlänge meinst.

:: LongPathFile.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::
@Echo off
Setlocal EnableDelayedExpansion
set Log="%USERPROFILE%\Desktop\LongPathFileLog.txt"  
Echo == %Date% == %Time:~,8% == %CD% == Check LongPathFile.cmd >>%Log%
:: Prüft ab aktuellem Verzeichnis
for /f "delims=" %%A in ('dir /B/S/A .') do (  
set "A=%%~fA"  & IF "!A:~251!" NEQ "" Echo/Full:%%~fA >>%Log%  
set "B=%%~dpA" & IF "!B:~251!" NEQ "" Echo/DrPf:%%~dpA >>%Log%  
set "C=%%~nxA" & IF "!C:~251!" NEQ "" Echo/NaEx:%%~nxA >>%Log%  
)                                          
Start Notepad %Log%
:: LongPathFile.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::

Gruß
LotPings

Edit Code angepasst
Biber
Biber 22.05.2009 um 15:26:12 Uhr
Goto Top
Moin Lord,

eine Quick and Dirty Lösung ohne temporäre Datei.
wobei in dem speziellen Fall, für den die Tutorialvariante gedacht war ( komplettes Laufwerk oder Netzwerkshare) eine temporäre Datei schon sinnvoll ist.

Wohlgemerkt - das, was mit einem "Dir /b/s/a C:\." oder "Dir /b/s/a X:\." durchrauschen würde am CMD-Prompt, das würde on the fly als Inputstream auf Verarbeitung durch die FOR/F-Anweisung warten.

Das brachte seinerzeit bei meinen Spielversuchen ein kleines bisschen den Lüfter zum Aufjaulen.

Nichtsdestotrotz - eine "produktiv" eingesetzte Lösung würde sicherlich etwas schlanker aussehen können als das Tutorial von damals.

Grüße
Biber
77559
77559 22.05.2009 um 15:57:19 Uhr
Goto Top
Zitat von @Biber:
Nichtsdestotrotz - eine "produktiv" eingesetzte Lösung würde sicherlich etwas schlanker aussehen können als das Tutorial von damals.
Hallo Biber,
das war keine Kritik, ich wollte halt nur herausstellen wie er was suchen kann - denn den Knackpunkt hab ich auf die Schnelle im Tutorial nicht gesehen, war am Notebook meiner Tochter mit winzigem bildschirm face-wink

Gruß
LotPings
primusvs
primusvs 22.05.2009 um 19:49:57 Uhr
Goto Top
Hallo bastla
Hallo LotPings,

da ich über keine Programmierkenntnisse verfüge (auch für nur Batch Programmierung), bräuchte ich hierfür eure Hilfe.
Ich habe bei mir zu Hause keinen Windows Rechner um diese Scripte zu testen.
Frühestens Montag bei der Arbeit.

Es geht mir darum bei Probleme mit den servergespeicherten Profile nachzuschauen, ob sich in diesem bestimmten Profil Dateien oder Verzeichnisse befinden die 255 Zeichen haben.
Schön wäre natürlich noch, die Angabe des Pfades wo sich diese Verzeichnisse/Dateien befinden.

Beste Grüße

primusvs
77559
77559 22.05.2009 um 20:02:17 Uhr
Goto Top
Zitat von @primusvs:
Schön wäre natürlich noch, die Angabe des Pfades wo sich diese Verzeichnisse/Dateien befinden.
Meine Batchdatei schmeisst alle Pfade, Dateinamen und Pfadnamenkombinationen raus, die jeweils länger als 250 Zeichen sind. Ich ändere den Source jetzt nochmal so ab das sie Ausgabe in eine Datei erfolgt, die anschließend angezeigt wird. gestest hatte ich bei mir und das sogar on real hardware und nicht nur by brain face-wink

Gruß
LotPings
primusvs
primusvs 25.05.2009 um 14:25:45 Uhr
Goto Top
Hallo LotPings,

habe dein Script heute getestet.
Es funktioniert soweit ganz gut, leider werden nur Dateien angezeigt.
Kannst du dies auch noch für Verzeichnisse durchführen bzw. integrieren.

Besten Grüße

primusvs
77559
77559 25.05.2009 um 14:54:50 Uhr
Goto Top
Das sollten die Zeilen 8 bis 10 eigentlich bereits tun.

Und bei meinen Tests hier klappt das auch.

Vielleicht schaust du dir die Bedeutung der Tilde Befehle in For /? oder Call /? nochmal an.

Gruß
LotPings
primusvs
primusvs 25.05.2009 um 16:34:38 Uhr
Goto Top
Hallo LotPings,

Leider funktioniert es bei mir nur mit Dateien.

Habe im Verzeichnis Eigene Dateien das Script hinzugefügt sowei eine Datei und Verzeichnis angelegt.

Datei:

2222222222222a3r2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.tmp

Verzeichniss:

ae987dddddddddddddddd77777dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd


Leider zeigt er mir nur die Datei an siehe unten

== 25.05.2009 == 16:24:09 == C:\Dokumente und Einstellungen\sorressa\Eigene Dateien == Check LongPathFile.cmd
Full:C:\Dokumente und Einstellungen\sorressa\Eigene Dateien\2222222222222a3r2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.tmp
== 25.05.2009 == 16:27:12 == C:\Dokumente und Einstellungen\kalle\Eigene Dateien == Check LongPathFile.cmd
Full:C:\Dokumente und Einstellungen\kalle\Eigene Dateien\2222222222222a3r2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.tmp

Vielleicht schaust du dir die Bedeutung der Tilde Befehle in For /? oder Call /? nochmal an. = was soll mir das sagen. (keine Programmierkenntisse)

Die 251 in deinem Script schient ja die Datei/Verzeichnislänge zu sein, kann ich diese verändern um eine andere Größe zu definieren z.B. 160


Schöne Grüße

primusvs
primusvs
primusvs 25.05.2009 um 16:43:32 Uhr
Goto Top
Hallo LotPings,

habe die 251 in deinen scripts mal auf 160 geändert und wolla es funktioniert.

Kann das sein, dass bei Verzeichnisse eine andere Begrenzung zutrifft als bei Dateien.

Beste Grüße und Recht herzlichen Dank für eure Hilfe

primusvs
77559
77559 25.05.2009 um 16:55:54 Uhr
Goto Top
Zitat von @primusvs:
Vielleicht schaust du dir die Bedeutung der Tilde Befehle in For /? oder Call /? nochmal an. = was soll mir das sagen. (keine Programmierkenntisse)

Damit rufst du in einem Cmd.exe Fenster die Hilfe zum For/Call Befehl auf.
Das ist auch für nicht-Programmierer sinnvoll.

Die 251 in deinem Script schient ja die Datei/Verzeichnislänge zu sein, kann ich diese verändern um eine andere Größe zu definieren z.B. 160

Meine Batch hatte sich genau nach deinen Vorgaben gerichtet. Natürlich kannst du die ändern und
du hast es ja schon erfolgreich probiert.

Gruß
LotPings