Моя проблема заключается в том, что я не могу дать имя своей папке или файлу со специальными символами, такими как \ / : * ? " < > | в ОС на базе Windows. Для меня очень важно дать имя файлу/папке, которое содержит этот тип символов.
Я уже искал и ссылался на столько сайтов, для этой проблемы, но все безнадежно. Я также читал страницу поддержки Microsoft, они предлагают использовать другие символы. Вот ссылка,https://support.microsoft.com/en-us/kb/177506
Я уже пробовал кнопку Alt + ASCII-код этого типа специальных символов с цифровой клавиатуры, просто для примера переименуйте файл/папку и нажмите Alt+60 (для символов <). Все равно выдается сообщение, что имя файла не может содержать ни одного из следующих символов: \ / : * ? " < > |
Предложите мне подходящее решение, чтобы я мог указать имя своего файла/папки с помощью этого типа специальных символов.
решение1
Для меня очень важно именование файлов/папок, содержащих эти символы.
Это может быть важно для вас, но вам придется отпустить это и найти другой способ решения вашей проблемы.
Эти символы не допускаются к вызовам функций ОС Windows, обрабатывающих имена файлов.
Они специально не допускаются, поскольку имеют другое применение:
- \- Зарезервировано для использования в качестве разделителя пути ипобегхарактер
- /- Зарезервировано для использования в качестве разделителя пути
- :- Зарезервировано для использования в качестве разделителя имени диска.
- *и ?- Зарезервировано для использования в качествеподстановочный знакперсонажи
- "- Зарезервировано для использованияцитироватьимена, содержащие пробелы
- <, >и |- Зарезервировано для использования в качестве командыперенаправлениеоператоры
Конечно, вы можете создавать файлы с именами, содержащими эти символы, используя другую операционную систему (при условии, что эта операционная система может читать/записывать файловую систему Windows).
Однако вы не сможете ничего сделать с этими файлами с помощью каких-либо программ Windows, поскольку они не будут понимать имена файлов и будут выдавать ошибки.
Именование файлов, путей и пространств имен
Соглашения об именовании
Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:
...
Используйте для имени любой символ текущей кодовой страницы, включая символы Unicode и символы расширенного набора символов (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
решение2
Создайте свой собственный набор шрифтов. Замените некоторые символы, которые вы не используете, изображениями зарезервированных символов.
решение3
В Windows нельзя создавать файлы с этими символами. Решения нет, эти символы запрещены Win32 API.
Win32 является подмножеством пространства имен POSIX и нечувствителен к регистру. Он использует все символы Unicode, за исключением: '"' '*' '/' ':' '<' '>' '?' '\' '|' NB Имена не могут заканчиваться точкой '.' или пробелом ''.
--http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf