Новости

Як обійти обмеження на довжину шляху при створенні або копіюванні файлу - Вадим Стеркиной

  1. [+] Сьогодні в програмі
  2. Як обійти обмеження на створення файлу з довгим шляхом
  3. експеримент
  4. дискусія

У читача Олександра підопічний юзер спросоння видалив важливий файл з мережевої папки. Адмін, заздалегідь підстеливши соломку, заспокоїв бідолаху і впевнено відкрив вчорашні тіньові копії. Файл там був, але в навантаження з ним йшли граблі.

Файл там був, але в навантаження з ним йшли граблі

[+] Сьогодні в програмі

Занадто довгий цільової шлях або ім'я файлу

Цитую лист:

Воно й не дивно, з таким-то шляхом! :)

\\ localhost \ D $ \ sales \ 0-Комерційний відділ (загальний ресурс-обмін) \ Загальний ресурс (тел., Реєстри, реквізити) \ КЛІЄНТИ З 2014 \ Стратегія \ Договір оренди з викупом_Кліент_27.06.14 \ Вар дог._25% аванс_с викупом_17.07.14 (Today, July 22, 2014 року, 3 hours ago) \ 3 вар_договор оренди з правом викупа_6443-001 від 17.07.14.pdf

Графічний інтерфейс тіньових копій випиляли тільки з Windows 8 , А на серверної ОС він зберігся, і властивості папки виглядають аналогічно Windows 7 .

Знімок екрану люб'язно надав   Вадімс Поданс
Знімок екрану люб'язно надав Вадімс Поданс

Як обійти обмеження на створення файлу з довгим шляхом

Зрозуміло, що відновлення [Restore] при такому довгому шляху не спрацює - адже потрібно скопіювати файл у вихідне розташування. Але я відразу не зрозумів, чому виникли труднощі з копіюванням файлу в будь-яке інше місце [Copy] - головне ж було повернути файл користувачеві. Провідник же може скопіювати файл з довгого шляху.

Так чи інакше, я отримав лист в метро, ​​і тому з телефону на швидку руку відправив відповідь, який повинен був обійти перешкоду. Я запропонував створити символічне посилання на частину шляху:

mklink / dc: \ link "\\ localhost \ D $ \ sales \ 0-Комерційний відділ (загальний ресурс-обмін) \ Загальний ресурс (тел., реєстри, реквізити) \"

Тепер копіювання файлу в C: \ link повинно було повернути його на колишнє місце. І це спрацювало :)

Таке рішення прийшло мені в голову не випадково - адже питання було про тіньові копіях, а я вже пару раз розповідав, як увійти в них за допомогою символічного посилання. Пізніше, коли я готував цю замітку і рився в своєму записнику , Спливло й інше рішення, яким я ділився три роки тому.

subst V: "\\ localhost \ D $ \ sales \ 0-Комерційний відділ (загальний ресурс-обмін) \ Загальний ресурс (тел., реєстри, реквізити) \"

Команда subst зіставляє папку букві диска, і при бажанні однією командою можна моментально зайняти всі букви ! В принципі, якщо шлях супер-довгий, це може стати в нагоді, тому що доведеться створювати серію зіставлень.

експеримент

Хочете перевірити, як все виглядає на практиці? Я підготував для вас CMD-файл ( завантажити ), Етапи роботи якого ви можете спостерігати в провіднику. запускайте файл від імені адміністратора , Інакше символічна посилання не вийде. Я перевіряв роботу файлу тільки в Windows 8.1, але він повинен працювати і в попередніх ОС.

Код командного файлу для експериментів

@echo off set folder = c: \ temp \ 111111111111111111111111111111111111111111111111111111111111111111111111111111111 \ 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 echo Створити папку з довгим шляхом pause md% folder% explorer% folder% echo. echo Створити в папці файл з максимально можливим за довжиною шляхом pause echo file >>% folder% \ longpath.txt echo. echo Безуспішно спробувати створити файл із загальним шляхом, що перевищує допустиму довжину pause echo. echo file >> c: \ temp \ verylongfile.txt copy c: \ temp \ verylongfile.txt% folder% \ *. * echo. echo Створити символічне посилання на папку pause echo. mklink / d C: \ temp \ link% folder% \ echo. echo Створити файл з шляхом, що перевищує допустиму довжину pause echo. echo file >> C: \ temp \ link \ verylongpath.txt echo. echo Зіставити папку з довгим шляхом букві диска pause subst V:% folder% subst echo. echo Створити ще один файл з шляхом, що перевищує допустиму довжину pause echo. echo file >> V: \ superpuperlongpath.txt echo. echo Видалити все створені зараз файли, папки, посилання і букви диска echo Ви повинні вручну видалити папку 1111111111 pause echo. rd / s / q% folder% rd / s / q C: \ temp \ link del / f / q C: \ temp \ verylongfile.txt subst / d V: echo. echo Це все :) pause

Оскільки пояснення кириличні, файл потрібно зберігати в кодуванні MS-DOS (підказка - у вас завжди є WordPad :)

Перш ніж видаляти всі файли на останньому кроці, ви можете пограти з створеними файлами і папками в файловому менеджері. Ви побачите різні повідомлення. Наприклад, при спробі копіювання файлу в папку:

При створенні нового текстового документа (стандартне ім'я довге):

Різні консольні команди теж на свій лад повідомляють про обмеження.

дискусія

взагалі, довжина шляху в 260 символів це анахронізм, хоча я не пригадую, коли стикався з обмеженням в останній раз. Однак я вже давно не розкладаю все по татусям , І вже тим більше з такими пекельними іменами.

А ви давно стикалися з обмеженням на довжину шляху? Напишіть в коментарях, як ви впоралися з проблемою або яке ще рішення ви знаєте. Я спеціально не вказав всі рішення задачі :)

Upd.

У коментарях читачі поділилися своїм досвідом по обходу обмеження на довжину шляху:

  • FAR (файловий менеджер)
  • robocopy (утиліта командного рядка, що входить до складу сучасних Windows)

Обговорення завершено.

А ви давно стикалися з обмеженням на довжину шляху?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: