Hirdetés

2024. május 4., szombat

Gyorskeresés

Hozzászólások

(#1) supesz


supesz
aktív tag

Hi All,

Azért nyitom ezt a topikot, hogy megosszuk egymással a tapasztalatainkat és érzéseinket a 255 karakter konvencionális csapdájáról. Szóval a bűvös 255 karakter legyen a bűvös szó, amivel ezt a topikot megtalálhatod.

Speciel engem az érdekelne, hogy a windowsban, hogyan tudnám elkerülni, hogy a 255-karakternél mélyebben levő állományok másolásakor, ne szálljon el a windows. Minden érdekel a témával kapcsolatban.

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#2) föccer válasza supesz (#1) üzenetére


föccer
nagyúr

Mivel az elérési út 255 karakterben van tárolva így max úgy tudod megcsinálni, hogy írsz egy saját programot, ami a vinyóról közverlenül olvassa/írja a fájlokat.

Igaz itt sem használhat windows-os eszközöket, mint pl: opendialog, savedialog, mert ezek is 255 karakterben tárolják a fájlok elérési útját.

megoldás: nem kell ilyen hosszú könyvtárneveket használni :)

üdv.: föccer

Építésztechnikus. Építőmérnök.

(#3) supesz válasza föccer (#2) üzenetére


supesz
aktív tag

ez igaz, de most egy problémát kell megoldani.
A probléma a következő: A szerveren adott egy mappastruktúra, ami mélyebb 255 karakternél. Ezt kellene szinkronizálni, de a mappamélység miatt a windows "eldobja a haját". Mi lehet a megoldás. Új mappastruktúra?!

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#4) föccer válasza supesz (#3) üzenetére


föccer
nagyúr

Ez lehetne megoldás, de hogy valósítod meg? Ha jól gondolom, most nég a fájlok megnyitása is nehézkes :)

Az megoldás lehet még, ha készítesz egy új particiót (particiókat), és x mélység alatti tartalamt áthelyezed arra a particióra. PQMagic elvileg meg tudja csinálni, ha jól emlékszem...

üdv.: föccer

Építésztechnikus. Építőmérnök.

(#5) supesz


supesz
aktív tag

itt találtam egy hasonló témát: [link]

Ha jól olvasom a vistában sem emeltek ezen a limiten. Vajon milyen érdek fűződhet, ahhoz, hogy ezt a korlátot fent tartják. Nem lenne jobb egy 65535 karakteres határ ?!

[ Szerkesztve ]

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#6) Rover623 válasza supesz (#3) üzenetére


Rover623
félisten

Esetleg a szerveren átstruktúrálod a mappákat...?:P

primus inter pares

(#7) burgatshow válasza Rover623 (#6) üzenetére


burgatshow
veterán

Vagy Linuxot használ.. :)

(#8) P.H.


P.H.
senior tag

A Windows API csatlakozási unitban: const MAX_PATH = 260;

SDK idézet:

Filename Conventions:
[...]
Process a path as a null-terminated string. The maximum length for a path, including a trailing backslash, is given by MAX_PATH.
[...]
The wide (Unicode) versions of the CreateDirectory, FindFirstFile, GetFileAttributes, and SetFileAttributes functions permit paths that exceed the MAX_PATH length if the path has the "\\?\" or "\\?\UNC\" prefix. These prefixes direct the functions to turn off path parsing. Use the "\\?\" prefix with paths for local storage devices and the "\\?\UNC\" prefix with paths having the Universal Naming Convention format.
[...]

Példa a CreateFile API-hívás leírásánál:
[...]
If *lpFileName is a path, there is a default string size limit of MAX_PATH characters. This limit is related to how the CreateFile function parses paths.
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\\?\" tells the function to turn off path parsing. This lets you use paths that are nearly 32,000 Unicode characters long. You must use fully-qualified paths with this technique. This also works with UNC names. The "\\?\" is ignored as part of the path. For example, "\\?\C:\myworld\private" is seen as "C:\myworld\private", and "\\?\UNC\tom_1\hotstuff\coolapps" is seen as "\\tom_1\hotstuff\coolapps".

[...]

Ha programot írsz, akkor ez a megoldás. Tehát Unicode string-eket használó program esetén (és csak ekkor) megteheted, hogy a teljes (gyökértől eredő) elérési utakat tartalmazó fileneveket a \\?\-rel vezeted be, ekkor kb. 32K hosszú lehet a teljes elérési út.

Ha maga a Windows-felület nem tudja kezelni a hosszú elérési utakat, akkor... marad az átszervezés.

[ Szerkesztve ]

Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

(#9) supesz válasza Rover623 (#6) üzenetére


supesz
aktív tag

Gyakorlatilag megtehetném, de vmi "láthatatlant" kellene alkotni. Rendszergazda vagyok, de nem "szabad" átrendezni a mappákat. A lényeg, hogy minden mappaváltozás nélkül kellene megoldani. Én azt gondoltam, hogy esetleg a windows finomhangolásával ez állítható, de föccer kolléga szerint ez így nem megoldható :(

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#10) supesz


supesz
aktív tag

Van olyan utility, amelyik azt csinálja, hogy felderítí, hogy melyik fájl+elérési útja hosszabb, mint 259 karakter? Mert, akkor lehet, hogy át kellene szervezni...

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#11) P.H. válasza supesz (#9) üzenetére


P.H.
senior tag

A 260-as amúgy korlát az egyszerre megadható hosszra vonatkozik, nem a teljes, abszolút útvonalra. Szóval az

assignfile(afile,'c:\nagyon_hosszú\még_hosszabb\file_name.txt')

esetén, ha a teljes út hosszabb, mint 260 karakter, akkor Unicode nélkül is csinálhatod azt, hogy

cddir('c:\nagyon_hosszú');
chdir('.\még_hosszabb');
assignfile(afile,'.\file_name.txt);

sorozatot minden gond nélkül (255 hosszú mappa/file név + a leghosszabb prefix is 4 karakteres).

Még mindig feltételezve, hogy programíráshoz kell. Azt nem nagyon hiszem, hogy NTFS-en pl. az Exlporer megadná magát emiatt.

#2 föccer:
Igaz itt sem használhat windows-os eszközöket, mint pl: opendialog, savedialog, mert ezek is 255 karakterben tárolják a fájlok elérési útját.

Az OpenDialog alatt levő API-hívás csak filenevet ad vissza, a programozási nyelvi körítések esetleg ezt egészítik ki utólag az aktuális könyvtár lekérdezésével, amire nincs hossz-korlátozás.

[ Szerkesztve ]

Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

(#12) föccer válasza P.H. (#11) üzenetére


föccer
nagyúr

Aham, leddig teljesen abbana tudatban éltem, hogy a fájlnév tartalmazza a teljes elérési utat is. Ej, ilyenkor jön kia z, hogy soha nem taunltam programozást, hanem csak amolyan botcsinálta fogtam neki....

:B

Építésztechnikus. Építőmérnök.

(#13) supesz válasza P.H. (#11) üzenetére


supesz
aktív tag

Sajnos vagy hál'Istennek nem programozásról van szó, tehát nem hivatkoznom kell abszolút vagy relatív módon. A problémámat már olvashattad fentebb.
Ami nem tisztázott számomra az az hogy: most a 260 karakter az a teljes hossz. Vagyis az első karaktertől (C:\) az utolsóig (valami.txt) 260 karakter lehet az elérési útvonal? (Azaz a C:\valami.txt már eleve 13 karakter és már csak 247 karakter mélyen lehet).
Vagy mi, mert már teljesen bezavarodtam :F

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

(#14) P.H. válasza supesz (#13) üzenetére


P.H.
senior tag

Tévedtem, megadja magát az Explorer NTFS-en is emiatt. Semmi nem indokolja ezt azontúl, hogy (hivatalosan) a Windows 9x verziókkal való kompatibilitás miatt nem lehet átlépni a gyökértől számított 260 karakteres útvonal-hosszt. Tehát (bár az NTFS képes sokkal mélyebb struktúrát is korrekt módon tárolni,) azt az elvet kell követni, amit leírtál #13-ban.

Gyors megoldás (Windows 9x-től egészen XP x64-ig biztosan működik, kipróbáltam). Tehát a fenti esetben, ha az elérési út
c:\nagyon_hosszú\még_hosszabb\file_name.txt
hosszabb, mint 260 karakter, akkor a SUBST parancs használatával:
SUBST z: c:\nagyon_hosszú\még_hosszabb
a file a Z:\file_name.txt hivatkozással elérhető, vagy rendesen, GUI-n keresztül, mivel:

- ezt a parancsot csak parancssorban lehet kiadni, nincs GUI (pl. jobb klikk + ...)megfelelője, de ezt követően megjelenik pl. a rendszerben (Sajátgépben) egy Z: meghajtó, amiben elérhető az eredeti mappa tartalma, amely megintcsak Z:-től mint gyökértől számított legfeljebb 260 karakteres útvonalhosszon keresztül kezelhető.
- ha ez nem elég, akkor a Z: valamely alkönyvtárára is kiadható újabb SUBST y: z.\mappa1\mappa2 parancs, és így tovább
- ezek a leképezések a SUBST z: /d parancs kiadásáig, vagy újraindításig élnek.

Hosszabb távon érdemes átgondolni a mappanevek lerövidítését, mert érhetnek kellemetlen meglepetések.

[ Szerkesztve ]

Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

(#15) supesz válasza P.H. (#14) üzenetére


supesz
aktív tag

Remek. :R Megnézegetem ezt a

SUBST

parancsot. Aztán lehet, hogy elég lesz ez is nekem most. Hogy egy kicsit nyitva maradjon ez a kérdés: Elfogadom a kompatibilitás pártiak aggodalmát, de valljuk be, hogy nem járható út ez az informatikában. Bosszantó a probléma, sokak által ismert is és ráadásul nem is tecnikai okok miatt nem használható. El kellen már feledni a Win 9x-eket.

A nucleus arcuatus (infundibularis) kapillárisaiból összeszedődő vénák a hypophysisnyélen keresztül lejutnak a hypopisis elülső lebenyébe - az adeno-hypopisisbe, és ott újra kapillárisokká oszlanak.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.