Как создать имя папки или имя файла с помощью специальных символов, таких как \ /: *? "<> | [дубликат]

9

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

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

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

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

Kirit_Vanani
источник
Просто любопытно: зачем тебе это?
Камиль Мачоровски
@ kamil Это для того, чтобы дать имя моему файлу / папке, и одна сложная задача для меня.
Kirit_Vanani
@ PIMP_JUICE_IT Я уже сделал это, (literalString -literalPath, но все еще не добился успеха.
Kirit_Vanani
даже если бы вы могли создавать файлы с этими символами, ни одна программа не сможет открыть или сохранить их.
Келтари
10
- Как я могу лизнуть мой локоть? - Ты не можешь. - Но мне нужно. - Вы можете сломать руку и попробовать, но тогда ваша рука будет бесполезна. - Мне все равно, мне просто нужно лизнуть мой локоть.
Камиль Мачоровски

Ответы:

16

Это очень важно для меня, присвоение имени файлу / папке, содержащей эти символы.

Это может быть важно для вас, но вы должны будете отпустить это и найти другой способ решения вашей проблемы.

Эти символы не допускаются вызовами функций ОС Windows, которые обрабатывают имена файлов.

Они специально не разрешены, потому что у них есть другое использование:

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

Конечно, вы можете создавать файлы с именами, содержащими эти символы, используя другую операционную систему (при условии, что эта операционная система может читать / записывать файловую систему Windows).

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


Именование файлов, путей и пространств имен

Соглашения об именах

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

...

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

  • Следующие зарезервированные символы:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • Целочисленное значение ноль, иногда его называют символом ASCII NUL.
  • Символы, чьи целочисленные представления находятся в диапазоне от 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 Ооо, Как создать имя файла с этими символами. Я не против, если он выдаст ошибку, но теперь задача - дать этот тип имени персонажа. Для доступа к этому файлу я буду использовать другую
ОС на
1
@Kirit Я уже говорил вам в ответе «Конечно, вы можете создавать файлы с именами, содержащими эти символы, используя другую операционную систему (при условии, что эта операционная система может читать / записывать файловую систему Windows)».
DavidPostill
3
@Kirit Я уже говорил тебе, что это невозможно .
DavidPostill
3

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

Clayton
источник
1
Это или использование похожих персонажей. С Unicode все возможно. Daniel
Даниэль Б
@ Craig620 Может быть, это будет невозможно, для меня. может дать мне подсказку
Kirit_Vanani
Не уверен, просто сумасшедшая идея, которая пришла в голову. Может быть, есть форум Stack Exchange для типографии или публикации, который вы могли бы спросить?
Клейтон
2

В Windows вы не можете создавать файлы с этими символами. Там нет решения, эти символы запрещены Win32 API.

Win32 является подмножеством пространства имен POSIX и нечувствителен к регистру. Он использует все символы Unicode, кроме: '' '' * * '/' ':' '<' '>' '?' '\' '|' NB Имена не могут заканчиваться точкой "." Или пробелом ".

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

ChrisInEdmonton
источник
NTFS не проблема. (На самом деле это разрешает эти символы просто отлично - это было необходимо для поддержки Interix.) Проблема заключается в самой Windows, то есть в Win32 API накладываются ограничения, независимо от того, что лежит в основе FS.
user1686
@ Grawity, вы, кажется, правы, основываясь на моих дальнейших расследованиях. Я отредактировал свой ответ, чтобы отразить это.
ChrisInEdmonton
Я думаю, что NTFS не проблема. Должно быть какое-то решение. Когда я получаю доступ к диску NTFS из ОС Linux, чем может быть, я могу печатать символы такого типа.
Kirit_Vanani
«Имена не могут заканчиваться точкой». Неправильно. Вы можете имена файлов, заканчивающиеся на .. Вы просто не можете сделать с ними много от cmd:)
DavidPostill
1
@Kirit Вам много раз говорили, что это невозможно .
DavidPostill