8

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

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

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

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

3 ответа3

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

3

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

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .