Jeden z naszych klientów zwykle używa bardzo długich nazw ścieżek (kilka zagnieżdżonych folderów z długimi nazwami) i rutynowo napotykamy „problemy z edukacją użytkowników” w celu skrócenia ścieżki do mniej niż 260 znaków.
Czy jest dostępne rozwiązanie techniczne, czy możemy przesunąć przełącznik w systemie Windows 7 i Windows 2008 R2, aby powiedzieć „tak, po prostu zignoruj te historyczne problemy i spraw, aby nazwa ścieżki +260 działała”.
PS Przeczytałem Pliki i ścieżki nazw i przestrzenie nazw
windows
windows-server-2008
windows-7
ntfs
Christopher Edwards
źródło
źródło
Odpowiedzi:
Metody są dostępne, ale dopóki Microsoft nie przekoduje widżetu przeglądarki plików, prawie utknęliśmy z tym starym problemem. Jest nieoptymalny, ale właśnie tak działa.
źródło
Wspomnę tylko o sztuczce, której jeszcze nie widzę.
Weźmy na przykład ten plik:
C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
Ta pełna ścieżka do pliku ma 290 znaków. Powłoka (Eksplorator Windows) i większość narzędzi wiersza poleceń prawdopodobnie nie pozwoli ci go dotknąć.
Użyj
subst
polecenia w następujący sposób:Teraz możesz uzyskać dostęp do (i usunąć, przenieść itp.) Pliku w ten sposób:
X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf
A teraz ta nazwa pliku ma tylko ~ 235 znaków, więc nie będziesz już mieć problemów z „Nazwa pliku jest za długa”.
W Windows API istnieje niesławna stała znana jako
MAX_PATH
. MAX_PATH ma 260 znaków. System plików NTFS obsługuje ścieżki do 32 767 znaków. Nadal możesz używać 32 767 długich nazw ścieżek, uzyskując dostęp do wersji funkcji Windows API Unicode (lub „szerokich”), a także przez prefiks ścieżki\\?\
.MAX_PATH
został osadzony w kamieniu bardzo dawno temu w świecie Windows. Myślę, że ma to coś wspólnego ze standardami ANSI w tamtym czasie ... ale to jedna z tych rzeczy, które Microsoft bardzo trudno zmienić teraz, ponieważ teraz mamy tysiące programów i aplikacji, w tym niektóre napisane przez samych Microsoft, które używająMAX_PATH
i zawiódłby w dziwny, nowy sposób, gdyby stała została nagle zmieniona. (Przepełnienia bufora, uszkodzenie sterty itp.)źródło
subst
korzystania z połączeń katalogowych, które mogą być wygodniejsze w czyszczeniu, jeśli chcesz tylko wprowadzić kilka szybkich zmian. Używam łącza Shell Extension , ale można po prostu użyćmklink
polecenia tak:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.Można obejść to ograniczenie, używając notacji \\? \ C:. Jest brzydki, ale obsługuje pliki o długości do 2 ^ 15.
http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
źródło
c:\usr-data
do `c: \ Users \ VeryLongUserName \ LongFolderName` i powiedzieć mu, aby używał tego pierwszego, ale jeśli regularnie nazywa foldery 40-Firma Microsoft ma teraz dostępną poprawkę na ten początek w systemie Windows 10, co wyjaśniono w artykule MSDN Pliki, ścieżki i przestrzenie nazw .
darthcoder już odpowiedział ze szczegółami dotyczącymi
\\?\C:
obejścia notacji, ale jest teraz klucz rejestru, przy pomocyHKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
którego można usunąć ograniczenia MAX_PATH dla pojedynczego systemu. W artykule wspomniano również o wsparciu dla kontroli zasad grupy wComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
organizacji lub implementacji w całej grupie, jeśli to konieczne.źródło