Как скопировать файлы, которые имеют слишком длинный путь в Windows?

52

Мне нужно сделать резервные копии некоторых файлов на сетевом ресурсе. Однако мне нужно скопировать эти файлы на мой локальный диск перед записью дисков, потому что эти файлы могут быть использованы. Некоторые файлы не будут скопированы, потому что путь к файлу слишком длинный. Есть ли обходной путь, кроме изменения структуры файла?

Брайан Штурм
источник
1
См. Также Ограничение имени пути в окне 256 символов .
Жиль "ТАК ... перестать быть злым"

Ответы:

27

Максимальная длина пути составляет 260 в Windows Vista / 7. Я могу рекомендовать три решения:

  • (если путь слишком длинный) Сначала скопируйте папку на верхний уровень в проводнике Windows, а затем переместите ее на локальный компьютер.
  • (если имена файлов слишком длинные) Сначала попробуйте заархивировать / rar / 7z их с помощью приложения для архивирования, а затем скопируйте файл архива на локальный компьютер и затем извлеките содержимое.
  • Используйте сторонние приложения.

Все эти предположения предполагают, что у вас есть какой-то доступ на запись в общей папке / компьютере в сети. Если вы не можете сделать что-либо из этого, вам может понадобиться помощь вашего администратора.

Гани Симсек
источник
8
архивирование файлов работает!
Брайан Штурм
@BrianSturm, ну, если предположить, что они являются сторонними приложениями
Pacerier
Хотя я действительно ненавижу это из-за Windows ... почтовое решение действительно спасло мой день. Спасибо!
Bas Slagter
67
robocopy /E source destination

Надежное копирование файлов и папок .

Windows 7 и выше:
Robocopy XP027 - это стандартная команда в Windows 7 и выше.

NT 4 / Windows 2000:
Инструменты комплекта ресурсов Windows Server 2003 включают Robocopy XP010,
который можно запустить в NT 4 / Windows 2000.

Windows 95 или NT 3.5:
Robocopy не работает в Windows 95 или NT 3.5. (Robocopy - это приложение Unicode).

Обходной путь Windows 95 или NT 3.5:
графический интерфейс Microsoft Robocopy установит Robocopy XP026 в C: \ Windows \ system32,
эта версия может работать на более старых ОС
и включает некоторые функции из XP027 (/ BYTES), но имеет совершенно неработающую обработку уровня ошибок.

Robocopy 'Jobs' и опция 'Monitor source' предоставляют альтернативу настройке запланированного задания для запуска пакетного файла с помощью команды Robocopy.

user19496
источник
6
Это решение. Если вы хотите отключить поддержку путей длиной более 256, укажите /256флаг. Большое спасибо! Я боролся с этим весь день.
Автомат
1
удивительно! Решение, которое я до сих пор не знаю, это встроенное решение.
SIslam
2
Отличное решение - пара дополнительных замечаний: (1) место назначения должно включать имя папки при копировании папки - например, при копировании C: \ Windows в D: \ Windows команда будет robocopy /E C:\Windows D:\Windows(т.е. не robocopy / EC: \ Windows D: \ ). (2) Может перемещать файлы вместо копирования с помощью /MOVEопции.
Стив Чемберс
В Windows это надежное решение для использования NAS. Вы можете начать копирование миллионов файлов, и если передача будет прервана на полпути, он начнет с того места, на котором остановился, не копируя все файлы, которые уже были переданы. Это действительно ценно, если у вас есть Wi-Fi-соединение, которое прерывается, и вы все еще хотите иметь возможность перемещать большое количество файлов с гарантированным завершением.
user19496
Это не работает для файлов с недопустимыми именами в Windows. Есть ли флаг для этого, который поможет?
Ричард
16

Вы можете получить доступ к длинам пути до ~ 32 000 символов, используя префикс \\?\.

\\?\C:\Some\Really\Long\Path

Это работает из командной строки и любых других программ, использующих методы Win32 Unicode Api, включая приложения .Net. Для этого требуется файловая система, которая поддерживает длинные пути (например, NTFS), но если у вас есть проблемы с длинными путями, это само собой разумеющееся.

Обратите внимание, что у некоторых приложений и множества собственных инструментов (таких как Explorer) будут проблемы с этими путями, поэтому используйте это, чтобы вырваться из дыры, а не в одну.

основной
источник
2
Это действительно отличный совет. Я также работаю, чтобы обойти обработку имен файлов com1, com2 и т.д.
Андреас Рифф
2

FastCopy - это проект C с открытым исходным кодом, написанный SHIROUZU Hiroaki и являющийся «Самым быстрым программным обеспечением для копирования / удаления в Windows». Он поддерживает UNICODE и более MAX_PATH (260 символов) имен файлов.

Если у вас есть сотни путей, которые слишком длинны для исправления, используйте инструмент « Path Tool Long Auto Fixer »

Markus
источник
2
FastCopy действительно отлично. В частности, в отличие от RoboCopy, он делает полезные вещи с соединениями каталогов / программными ссылками.
rlpowell
Отлично. Альтернативно, есть ответ SO, который перечисляет подобные программы быстрого копирования , которые также обычно совместимы с расширенным путем.
ingyhere
-3

Самым быстрым исправлением, которое я использовал в этой ситуации, было переименование папок с длинными именами в что-то вроде «1».

Кроме того, в качестве общей практики я стараюсь объяснить всем пользователям, чтобы они не помещали историю своей жизни в имя файла или папки.

Любой приличный файловый менеджер может обрабатывать имена файлов длиной более 260 символов.

Сверхразум
источник