Як створити ім'я папки чи ім'я файлу за допомогою спеціальних символів типу \ /: *? "<> | [дублікат]


9

Моя проблема полягає в тому, що я не можу дати ім’я своєї папки чи файлу зі спеціальними символами, такими як \ /: *? "<> | в ОС на базі Windows Це для мене дуже важливо, що дається ім'я файлу / папки, що містить цей тип символів.

Я вже шукаю та посилаюсь на стільки сайтів для цих проблем, але всі вони безнадійні. Я також читаю сторінку підтримки Microsoft, вони пропонують використовувати інші символи. Це його посилання https://support.microsoft.com/en-us/kb/177506

Я вже пробую клавішу Alt + номер коду ASCII цього типу спеціальних символів, з клавіші numpad, просто перейменуйте файл / папку та натисніть Alt + 60 (для <символів). символи: \ /: *? "<> |

Запропонуйте мені підходяще рішення, щоб я міг дати ім'я моєму файлу / папці з таким типом спеціальних символів.


Просто цікаво: для чого це потрібно?
Каміль Маціоровський

@ kamil Це для того, щоб дати ім'я мого файлу / папки, і одне складне завдання для мене.
Kirit_Vanani

@ PIMP_JUICE_IT Я вже це робив (literalString -literalPath, але все ще не
здобув

навіть якщо ви могли б створити файли з цими символами, жодна програма не змогла б їх відкрити чи зберегти.
Келтари

10
- Як я можу лизати лікоть? - Ти не можеш. - Але я повинен. - Ви можете зламати руку і спробувати, але ваша рука буде тоді марною. - Мені все одно, мені просто треба лизати лікоть.
Каміль Маціоровський

Відповіді:


16

Для мене це дуже важливо, називаючи файл / папку, в якій містяться ці символи.

Це може бути важливим для вас, але вам доведеться відпустити це і знайти інший спосіб вирішити свою проблему.

Ці символи заборонено викликами функції ОС Windows, які обробляють імена файлів.

Вони спеціально заборонені, оскільки вони мають інше використання:

  • \- Зарезервовано для використання в якості роздільника шляху та символу втечі
  • / - Зарезервовано для використання як роздільник шляху
  • : - Зарезервовано для використання в якості роздільника імені диска
  • *і ?- Зарезервовано для використання в якості підстановлювальних символів
  • "- Зарезервовано для цитування імен, що містять пробіли
  • <, >і |- Зарезервовано для використання в якості операторів перенаправлення команд

Звичайно, можна створювати файли з іменами, що містять ці символи, використовуючи іншу операційну систему (доки ця операційна система може читати / записувати файлову систему Windows).

Однак ви не зможете зробити що-небудь з цими файлами за допомогою будь-яких програм Windows, і вони не зрозуміють імена файлів і генеруватимуть помилки.


Іменування файлів, шляхів та просторів імен

Названня конвенцій

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

...

Використовуйте будь-який символ на поточній кодовій сторінці для імені, включаючи символи Unicode та символи в розширеному наборі символів (128–255), за винятком наступного:

  • Наступні зарезервовані символи:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • Значення цілого числа нульове, іноді його називають символом NUL ASCII.
  • Символи, цілочисельні подання яких знаходяться в діапазоні від 1 до 31, за винятком альтернативних потоків даних, де ці символи дозволені. Для отримання додаткової інформації про потоки файлів, див. Файлові потоки.
  • Будь-який інший символ, який цільова файлова система не дозволяє.

Ім'я джерел, імена файлів, шляхів та просторів імен


Але я дуже хочу це зробити все одно.

Встановіть cygwin та використовуйте touch.

Я не перевірив усі можливості, окрім наступної роботи:

touch :
touch \|
touch \"
touch \>

Приклад виводу:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

Як ви бачите, вони не використовуються в Windows:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

введіть тут опис зображення


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

2
@Kirit Ви можете створювати файли за допомогою цих символів, але Windows не може нічого з ними робити, і ви спробуєте використати ці файли з Windows.
DavidPostill

@ DavidPostill О, як створити ім'я файлу за допомогою цих символів. Я не заперечую, якщо він дає помилку, але тепер завданням є надати цьому типу символу ім'я .. Для доступу до цього файлу я буду використовувати іншу ОС Linux
Kirit_Vanani

1
@Kirit Я вже сказав вам у відповіді "Ви, звичайно, можете створювати файли з іменами, що містять ці символи, використовуючи іншу операційну систему (доки ця операційна система може читати / записувати файлову систему Windows)."
DavidPostill

3
@Kirit Я вже казав, що це неможливо .
DavidPostill

3

Створіть власний набір шрифтів. Замініть деякі символи, які ви не використовуєте, зображеннями зарезервованих символів.


1
Це або використання символів, що нагадують lookaka. З Unicode все можливо. 🎃
Даніель Б

@ Craig620 Можливо, для мене це буде неможливо. може дати мені підказку для цього.
Kirit_Vanani

Не впевнений, просто шалена ідея, яка прийшла в голову. Можливо, ви можете попросити форум Stack Exchange для друкарні чи публікації?
Клейтон

2

У Windows не можна створювати файли з цими символами. Рішення немає, API Win32 заборонено.

Win32 - це підмножина простору імен POSIX і нечутлива до регістру. Він використовує всі символи Unicode, за винятком: '"' '*' '/' ':' '<' '>' '?' '\' '|' NB Імена не можуть закінчуватися крапкою "." Або пробіл "".

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf


NTFS - це не проблема. (Насправді це дозволяє цим персонажам просто чудово - це потрібно було для підтримки Interix.) Проблема полягає в самій Windows, тобто обмеження накладаються API Win32 незалежно від того, що лежить в основі FS.
користувач1686

@grawity, на моїх подальших дослідженнях ви здаєтеся правильним. Я відредагував свою відповідь, щоб це відобразити.
ChrisInEdmonton

Я думаю, що NTFS - це не проблема. Це повинно мати якесь рішення. Коли я отримую доступ до накопичувача NTFS з ОС на базі Linux, ніж це можливо, я можу ввести цей тип символів.
Kirit_Vanani

"Імена не можуть закінчуватися крапкою". Неправильно. Ви можете записати імена, що закінчуються на .. Ви просто не можете багато зробити з ними cmd:)
DavidPostill

1
@Kirit Вам багато разів говорили, що це неможливо .
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.