Имена файлов слишком длинные, и Windows не может открыть файлы

12

На сетевом диске есть куча файлов на довольно глубоком пути, а каталоги большинства из них имеют длинные имена. Я думаю, что они изначально были созданы, когда кто-то скопировал и вставил корневой каталог для этой группы файлов со своей локальной рабочей станции на общий сетевой диск. Я предполагаю, что на локальной рабочей станции не было проблем с открытием файла, но теперь, когда они находятся на более длинном пути в сети, Windows не может открыть их, когда я дважды щелкаю. Я также пытался скопировать файлы и переименовать их в более короткие, но Windows также не может этого сделать.

TL; DR

файлы с чьей-то рабочей станции по (гипотетическому) пути, например:

C:\Documents and Settings\SomeUser\Files\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
-----------------------------------------^

теперь скопированы и вставлены в сеть следующим образом:

Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
---------------------------------------------------------------------^

И путь теперь слишком длинный для Windows XP.

Любые советы о том, как я могу прочитать эти файлы?

FrustratedWithFormsDesigner
источник
Ok ! Посмотрите на superuser.com/questions/257472/…
bZezzz
@bZezzz: Похоже, что это будет работать на файловой основе, но я ищу кое-что, чтобы сделать их доступными сразу. Копирование на локальные рабочие станции будет в порядке, но длинные имена файлов должны быть сохранены (они обеспечивают очень специфический контекст для содержимого файла). Кроме того, многие пользователи здесь не достаточно технически, чтобы начать открывать файлы из командной строки. Ваше предложение может работать для меня и еще одного человека.
FrustratedWithFormsDesigner

Ответы:

7

Попробуйте заменить путь с помощью SUBST.EXE. Он поставляется с Windows:

C:\Users\shufler>subst /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.

Что вы хотите сделать, это заменить одну из папок вниз по цепочке буквой диска:

 C:\>subst X: Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1

Теперь папка LongSubdirectoryName1 доступна на диске X :. Когда вы закончите с этим вы можете удалить замену с помощьюsubst X: /D

Если вам это нужно постоянно, добавьте его в свой скрипт входа в систему.

Другой подход заключается в том, чтобы отобразить диск дальше по цепочке, где бы ни отображался Q :.

shufler
источник
2
Недавно я много сталкивался с этой проблемой и использовал подход SUBST. Для этой цели я нашел инструмент Visual Subst, доступный по адресу ntwind.com/software/utilities/visual-subst.html, как неоценимый.
Ёш м
6

Вам нужно будет переименовывать имена каталогов в пути, пока имя не станет достаточно коротким для доступа ОС.

Я бы перешел к первой папке, имя которой вы можете изменить, и переименовал ее в одну букву, а затем делал бы то же самое для каждой последующей папки, пока не дойдете до нужного файла.

Относительно необходимости сохранения структуры: есть ограничения, с которыми мы должны работать в операционных системах, и не рекомендуется регулярно работать вне этих параметров. Любое быстрое решение сейчас будет только патчем, который нужно будет снова запустить в будущем. Истинное решение будет включать в себя реорганизацию структуры каталогов так, чтобы эта чрезвычайно длинная проблема пути к файлу / имени файла больше не требовалась.

music2myear
источник
256 символов.
bZezzz
Нет, им нужно использовать программу, которая НЕ является проводником Windows, поскольку проводник Windows не обращает внимания на спецификации файловой системы и лениво выбирает наименьший общий знаменатель, что делает невозможным, например, просто скопировать существующий корень одного диска в корень другого идентичного диска (по емкости, формату и т. д.) без ошибок PATH TOO LONG.
Трийнко
0

РЕДАКТИРОВАТЬ: Первоначально я предложил использовать robocopy, но, конечно, это XP, и он не имеет предустановленной.

Вы не сможете «дать всем то, что они хотят». Если путь к файлу слишком длинный, вы не сможете выполнять с ним никаких операций с файлами. На мой взгляд, у вас есть несколько вариантов:

  1. Следуйте инструкциям других сообщений и переименовывайте каталоги, пока они не станут короткими. Хорошая вещь о компьютерах заключается в том, что вы можете написать скрипт, который не только сделает это за вас, но и отследит, какими были первоначальные имена. Даже со сценарием это отнимает много времени.

  2. Получить Linux LiveCD. Вставьте его в компьютер и загрузитесь с этого компакт-диска. Посмотрите диск Windows, который будет автоматически смонтирован как отдельная файловая система. Получите все нужные файлы и поместите их в новую папку на рабочем столе. Заархивируйте эту папку и поместите ее на внешний жесткий диск или USB-накопитель или, если ваш сетевой диск позволяет копировать обратно в файловую систему, переместите ее в каталог верхнего уровня.

вода
источник
У меня не установлена ​​robocopy, и я не уверен, что у меня есть доступ для ее установки (это рабочий компьютер). Кроме того, это звучит как большая работа для каждого файла. Мой пример был упрощен: на самом деле есть несколько каталогов на нескольких уровнях слишком глубоко, каждый из которых содержит файлы, которые в настоящее время недоступны из-за проблем со слишком длинным путем. У меня действительно нет времени, чтобы сделать это для всех файлов, которые все хотят.
FrustratedWithFormsDesigner