Hogyan lehet törölni egy fájlt, amelynek útvonal hossza meghaladja a 260 karaktert

Nem titok, hogy a Windows Explorer, akárcsak a legtöbb más Windows alkalmazás, beleértve a PowerShell-et, nem működik a mélymappákba beágyazott fájlrendszer-objektumokkal., Az út hossza meghaladja a 260 karaktert. Ezenkívül ez a korlátozás csak alkalmazási szinten létezik, és maga az NTFS fájlrendszer is támogatja a fájl elérési útvonalait 32767 karakterek.


Ezt a korlátozást a könyvtár írja elő. Win32 API, legfeljebb 260 karakter hosszú útvonalon (MAX_PATH = 260). Általában egy utat képeznek a következő elemekből:  [C: \] + [path_of_256_characters] + [], és egy könyvtár / fájl maximális hossza NTFS-ben 255 karakter Unicode-ban. Unicode API funkciók használatakor lehetséges a elérési út használata 32767 karakterek. Emiatt számos harmadik féltől származó program (például ugyanazok a népszerű fájlkezelők) FAR és Teljes parancsnok) a fájlokat / mappákat minden nehézség nélkül feldolgozza, amelyek elérési útja meghaladja a 260 karaktert.

tanács. Megkerülheti a Win32 API korlátozását, és a hosszú fájlnevekkel dolgozhat az elérési út UNC formátumának használatával, és a kiterjesztett hosszúságú elérési előtaggal megadhatja a fájl abszolút elérési útját. \\?. Például: \\? \ C: \ SomeLongPath \ LongNameFile.txt

Ez a korlátozás nem vonatkozik a felhasználóknak az SMB protokollon keresztüli fájlokhoz való hozzáférésére (emiatt a hosszú útvonalú könyvtárstruktúrák nem ritkák a felhasználói adatokkal rendelkező fájlkiszolgálókon). A kiszolgálót kiszolgáló rendszergazda nem tudja a fájlokat hosszú utakkal kezelni (törölni / áthelyezni) a Windows Explorer felfedezőjének felületén keresztül. Amikor fájlt próbál létrehozni / lemásolni egy ilyen könyvtárba, hiba jelentkezik:

A rendeltetési út túl hosszú. A fájlnév (ek) túl hosszú lennék a célmappa számára. Rövidítheti a fájl nevét, és megpróbálhatja újra, vagy kipróbálhatja a lerövidített útvonallal rendelkező helyet

Más programok / párbeszédablakok korlátozásukat jelezhetik a maga módján..

Vicces, hogy 2014 az ablakon kívül van, és még mindig beszélünk a Windows maximális elérési útjának 260 karakterből álló korlátozásáról ... De úgy tűnik, hogy a közeljövőben nem várható jelentős változás, és még egy teljesen friss Windows 10 műszaki előnézetben is ez a korlátozás továbbra is létezik.

Ebben a cikkben megmutatjuk, hogy a Windows rendszerben hogyan lehet dolgozni olyan fájlokkal, amelyek elérési útja meghaladja a 260 karaktert. Ebben az esetben a mi feladatunk egy hosszú út hosszú fájlokat tartalmazó könyvtár törlése.

Amikor megpróbál törölni egy ilyen könyvtárat az Intézőből, egy hiba jelenik meg:

A fájlnév (ek) túl hosszú lennék a célmappa számára. Rövidítheti a fájl nevét, és megpróbálhatja újra, vagy kipróbálhatja a lerövidített útvonallal rendelkező helyet.

A Powershell nem képes a 260 karakternél hosszabb elérési utat tartalmazó könyvtárak és fájlok helyes kezelésére. Az ilyen fájlokkal rendelkező könyvtár törlésekor (C: \ Install \ MS SQL 2012 Express Edition 64 bites \ verylongpath) egy hibaüzenet jelenik meg:

Elem eltávolítása. \ Nagyon hosszú út - folytatás

Elem eltávolítása: A megadott elérési út, fájlnév vagy mindkettő túl hosszú. A teljesen minősített fájlnévnek kevesebbnek kell lennie, mint 260
karaktereket, és a könyvtárnévnek kevesebbnek kell lennie 248 karakternek.
Sorban: 1 karakter: 1
+ Elem eltávolítása. \ Nagyon hosszú út - folytatás
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Kategóriainformáció: WriteError: (C: \ Install \ MS S ... it \ verylongpath: String) [Elem eltávolítása], PathTooLongExcepti
tovább
+ FullyQualifiedErrorId: RemoveItemIOError, Microsoft.PowerShell.Commands.RemoveItemCommand

A legegyszerűbb lehetőség (amelyet valójában a hibaablakban javasolnak) az, hogy lerövidítik a szülőmappák nevét, csökkentve a teljes út hosszát (de nem mindig alkalmazhatók).

Egy másik lehetőség egy szimbolikus link létrehozása az út egy részéhez, ezáltal lerövidítve az út teljes hosszát:

mklink / d c: \ install \ link “C: \ Install \ MS SQL 2012 Express Edition 64 bites \ verylongpath”

Ezután a fájlműveleteket végre kell hajtani azzal a könyvtárral, amelyhez a szimbolikus link hozzá van rendelve..

Egy másik lehetőség, amely hasonló a szimbolikus hivatkozással való munkához, a probléma mappájának virtuális lemezen való leképezése (az X példánkban :), ezáltal csökkentve az út hosszát:

X tartalom: “C: \ Install \ MS SQL 2012 Express Edition 64 bites \ verylongpath”

Most már dolgozhat az X: meghajtón lévő adatokkal, a fájl elérési útjai nem haladják meg a korlátot. A munka befejezése után törölheti a virtuális lemezt:

X anyag: / d

De személy szerint az ilyen helyzetekben az adatok törlése során a legjobban szeretem a lehetőségeket robocopy.exe, amely hosszú útvonalakat támogat.

Az opció használata / MIR, a robocopy segédprogram létrehozhat egy teljes másolatot (tükör) a forráskönyvtárból a célban. És ha a forrásmappa üres, akkor a célmappában lévő összes adat is törlődik. Hozzon létre egy üres mappát C: \ Telepítés \ teszt és a / MIR argumentum segítségével másolja a tesztmappa tartalmát a célmappába (ha a mappa neve szóközöket vagy cirill betűket tartalmaz, az elérési utat idézőjelekbe kell csatolni).

másolat / MIR C: \ Telepítés \ teszt "C: \ Telepítés \ MS SQL 2012 Express Edition 64 bites \ verylongpath"

A parancs végrehajtása után a C: \ Install \ MS SQL 2012 Express Edition 64 bites \ verylongpath könyvtár tartalma törlődik (egy üres könyvtár tartalmával helyettesíti).

Tehát ma bemutattunk néhány egyszerű trükköt, amelyeket felhasználhat, ha olyan mappákkal dolgozik, amelyek olyan mappákat tartalmaznak, amelyek elérési útja meghaladja a 260 karaktert.