Dateinamen werden im MRT kommentarlos abgeschnitten
Moderators: Hacker, Stefan2, white
-
- Senior Member
- Posts: 415
- Joined: 2005-05-24, 10:41 UTC
- Location: Wien
Dateinamen werden im MRT kommentarlos abgeschnitten
Eben bin ich auf einen etwas lästigen Fehler im Multirenametool gestossen: Dateinamen werden, wenn der Gesamtpfad für die neuen Dateinamen zu lang ist, kommentarlos und ohne Warnung abgeschnitten.
Die maximale Länge für einen Dateinamen beträgt 255 Zeichen!
- Wie lang war der Name in deinem Fall?
- Welche TC Version?
Ich habe grad versucht eine Datei mit dem Namen: (80+3 Zeichen)
mittels (320 +3 Zeichen)
umzubenennen, und erhalte in TC7.50 RC1 die folgende Fehlermeldung:
Das klappt in TC7.5 auch problemlos, wenn der Gesamtpfad zur Datei länger als 259 Zeichen ist.
Die maximale Pfadlänge (inklusive Name.ext) ist 1022 Zeichen.
Gruß
Holger
Edith hat karlchen Korrekturen eingetragen.
- Wie lang war der Name in deinem Fall?
- Welche TC Version?
Ich habe grad versucht eine Datei mit dem Namen:
Code: Select all
123456789abcdefghijk123456789abcdefghijk123456789abcdefghijk123456789abcdefghijk.txt
mittels
Code: Select all
[N][N][N][N]
umzubenennen, und erhalte in TC7.50 RC1 die folgende Fehlermeldung:
Umbenennen in [N][N][N] (240+3 Zeichen) klappt ohne Problem.---------------------------
Total Commander
---------------------------
Fehler, konnte die fett dargestellten Dateien nicht umbenennen!
---------------------------
OK
---------------------------
Das klappt in TC7.5 auch problemlos, wenn der Gesamtpfad zur Datei länger als 259 Zeichen ist.
Die maximale Pfadlänge (inklusive Name.ext) ist 1022 Zeichen.
Gruß
Holger
Edith hat karlchen Korrekturen eingetragen.
Last edited by HolgerK on 2009-08-16, 10:32 UTC, edited 1 time in total.
Hi.
Maximale Gesamtlänge eines Pfades im Total Commander 7.50 beta, also Laufwerksbuchstabe + Doppelpunkt + \ + Verzeichnis + \ + Verzeichnis + \ ... + \ + Dateiname + Punkt + Erweiterung, 1022 Zeichen.
Maximale Länge jedes Teils zwischen 2 Backslashes bzw. nach dem letzten Backslash: 255 Zeichen (Windows-interne Grenze) Also kann ein Dateiname inklusive Punkt und Erweiterung ohne Pfadangabe nicht länger als 255 Zeichen sein.
Mein bescheidener Wissensstand.
Kleiner Hinweis: Doppelpunkt, Backslash sowie jeder Punkt im Namen zählen mit, also auch der Punkt vor der Dateinamenserweiterung. Das erhöht die von dir, Holger, genannten Dateinamenlängen immer genau um 1.
Grüße,
Karl
--
P.S.:
An Dateinamen, die zusammen mit dem vollständigen Pfad mehr als 255 Zeichen haben, scheitert dann aber so mancher Windows-eigene und Drittanbieter-Editor.
Dateien, deren vollständiger Pfad länger also 259 Zeichen ist, kann man nicht mehr in den Windows Papierkorb löschen, egal ob per Explorer oder per Total Commander.
Jetzt muß ich die Testdateien daher mit Shift+F8 entsorgen.
Maximale Gesamtlänge eines Pfades im Total Commander 7.50 beta, also Laufwerksbuchstabe + Doppelpunkt + \ + Verzeichnis + \ + Verzeichnis + \ ... + \ + Dateiname + Punkt + Erweiterung, 1022 Zeichen.
Maximale Länge jedes Teils zwischen 2 Backslashes bzw. nach dem letzten Backslash: 255 Zeichen (Windows-interne Grenze) Also kann ein Dateiname inklusive Punkt und Erweiterung ohne Pfadangabe nicht länger als 255 Zeichen sein.
Mein bescheidener Wissensstand.
Kleiner Hinweis: Doppelpunkt, Backslash sowie jeder Punkt im Namen zählen mit, also auch der Punkt vor der Dateinamenserweiterung. Das erhöht die von dir, Holger, genannten Dateinamenlängen immer genau um 1.
Grüße,
Karl
--
P.S.:
An Dateinamen, die zusammen mit dem vollständigen Pfad mehr als 255 Zeichen haben, scheitert dann aber so mancher Windows-eigene und Drittanbieter-Editor.

Dateien, deren vollständiger Pfad länger also 259 Zeichen ist, kann man nicht mehr in den Windows Papierkorb löschen, egal ob per Explorer oder per Total Commander.

Jetzt muß ich die Testdateien daher mit Shift+F8 entsorgen.

Mein Fehler lag darin, dass ich die 0x0 Terminierung des Strings im Buffer nicht abgezogen habe.karlchen wrote:Kleiner Hinweis: Doppelpunkt, Backslash sowie jeder Punkt im Namen zählen mit, also auch der Punkt vor der Dateinamenserweiterung. Das erhöht die von dir, Holger, genannten Dateinamenlängen immer genau um 1.
Code: Select all
/*
* Sizes for buffers used by the _makepath() and _splitpath() functions.
* note that the sizes include space for 0-terminator
*/
#define _MAX_PATH 260 /* max. length of full pathname */
#define _MAX_DRIVE 3 /* max. length of drive component */
#define _MAX_DIR 256 /* max. length of path component */
#define _MAX_FNAME 256 /* max. length of file name component */
#define _MAX_EXT 256 /* max. length of extension component */
Daher stolpern (wie von karlchen bereits genannt) viele Programme über solch lange Pfade.
NTFS selber unterstützt maximal 32767 Zeichen.
Wobei MS explizit warnt bis an die maximale Grenze zu gehen:
Danke für den Hinweis.The maximum path of 32,767 characters is approximate, because the "\\?" prefix may be expanded to a longer string by the system at run time, and this expansion applies to the total length.
Gruß
Holger
- ghisler(Author)
- Site Admin
- Posts: 50754
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Ja, TC 7 hat die Namen bei der Windows-Limite von 259 Zeichen automatisch abgeschnitten. TC 7.5 warnt nun, wenn der Name länger wird, und erlaubt bis zu 1022 Zeichen.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com