FileGetSize Pfadlänge

  • Ich habe den Eindruck, dass bei FileGetSize die Pfad- und Dateinamenlänge zusammen nicht 255 Zeichen überschreiten darf. Auf jeden Fall gehts bei 241 Zeichen noch, bei 273 aber nicht mehr. Was kann man da machen, um auch die Größe von Dateien herauszubekommen die längere Pfade haben?

    Einmal editiert, zuletzt von diepfeile (15. Januar 2014 um 01:50)

  • Das hat nichts mit FileGetSize() zu tun, sondern mit Windows bzw. dessen FileSystem.

    Einzige Lösung die mir z.Zt. einfällt wäre, ggf. in die jeweilige Unterverzeichnisse mit FileChangeDir(".\Unterverzeichnis") zu wechseln und dann die Datei mit FileGetSize() abzufragen. Ich gehe aber ohne es getestet zu haben davon aus, das auch dann eine Fehlermeldung erscheinen wird.

    Trotzdem viel Spaß beim probieren.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ich gehe jetzt auch einfach mal davon aus, das FileCHangeDir() dich nicht weiter bringt.

    Sofern du ein NTFS fromatiertes Laufwerk verwendest, könntest du allternativ das Kommandozeilentool "subst" verwenden um ein virtuelles Laufwerk zu erstellen. Dazu musst du deinen Pfad nur unter 256 Zeichen kürzen und den maximal zulässigen Ordner per "subst" einbinden. Von dort aus solltest du dann auf die Datei zugreifen können, da der direkte Pfad zur Datei lediglich "x:\der\rest\des\ursprungspfades\" ist.

    Reine Theorie aber zumindest auf NTFS formatierten Laufwerken sollte das funktionieren. Denn dort wird diese 256 Zeichen Beschränkung nur vom Explorer festgelegt. Das Dateisystem selbst kennt sie nicht.

  • Ich zitiere mal Wikipedia:

    Bei FileGetSize und FileMove funktioniert es, aber DirRemove scheint es nicht zu klappen.

    Selbst im Testscript nicht, die Ordner werden erstellt, aber nicht wieder gelöscht, obwohl error und extended je 0 sind.

    Code
    $dir = "\\?\" & @WorkingDir
    DirCreate($dir & "\blup\test")
    DirRemove($dir & "\blup",1) ; klappt nicht
    ;DirRemove(@WorkingDir & "\blup",1) ; klappt
    MsgBox(0, "", "Value of @error is: " & @error & @CRLF & "Value of @extended is: " & @extended)


    Funktioniert nur bis unter 255zeichen die restlichen Ordner fehlen sonst:

    Code
    $dir = "\\?\" & @WorkingDir
    DirCreate($dir & "\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m")

    2 Mal editiert, zuletzt von diepfeile (18. Januar 2014 um 20:31)