Как получить файл в Windows с двоеточием в имени файла?

Я получаю сообщения об ошибках от клиентов, которые загружают файлы с двоеточием в имени файла, т.е. C:/uploads/test : doc.html

Я предполагаю, что какая-то система Unix или Linux создает файл, но я не уверен, как пользователи сохраняют их с недопустимым именем файла. Я закодировал часть, которая должна переименовывать документ при загрузке. Моя проблема в том, что я не могу проверить это, потому что я не могу получить файл в Windows, в имени которого есть двоеточие.


person David    schedule 30.04.2012    source источник
comment
Есть несколько символов, которые просто не разрешены в именах файлов Windows, двоеточие — один из них. Прости.   -  person Mark Ransom    schedule 30.04.2012
comment
P.S. полный список недопустимых символов находится здесь: msdn.microsoft.com/en-us/library/windows/desktop/   -  person Mark Ransom    schedule 30.04.2012
comment
Возможно, это можно сделать с помощью собственного API или драйвера устройства. Но вы не сможете загрузить файл из приложения Windows или сделать с ним что-либо еще.   -  person Harry Johnston    schedule 01.05.2012
comment
Я часто использую двоеточие полной ширины в именах файлов. Это символ Unicode, очень похожий на двоеточие, поэтому я использую его там, где Windows не разрешает использовать обычное двоеточие. Он визуально окружен пробелами, которые вы не можете удалить. Я наткнулся на него много лет назад, теперь я просто копирую и вставляю его, когда мне это нужно.   -  person adraedin    schedule 25.07.2014


Ответы (7)


Я нашел символ, очень похожий на двоеточие, "꞉". Это символ Юникода, называемый буквой-модификатором двоеточия. У него нет пробела, как у полноширинного двоеточия, и он почти такой же, как обычное двоеточие, но символ работает. Вы можете либо скопировать и вставить его сверху, либо использовать кодовую точку U+A789.

person Jack    schedule 24.08.2014
comment
Потрясающий. Я уже некоторое время отслеживаю эти замены юникода для имен файлов, так что спасибо! Ты обалденный. Я знаю, что вы не спрашивали, но если вам когда-нибудь понадобится вопросительный знак, вы можете использовать вместо него «⁇». (U+2047). Для косой черты вы можете использовать косую черту деления: '∕' (U+2215). Может быть, кому-то они пригодятся. - person Brent Rittenhouse; 20.05.2018

Двоеточие — недопустимый символ для имени файла Windows. Вы не сможете разрешить ':' в имени файла, но вы можете обойти это.

Вы можете либо сделать то, что звучит так, как будто вы уже сделали; создайте сценарий, который заменяет эти недопустимые символы допустимыми на стороне UNIX. Или вы можете позаботиться об этом на сервере Windows с преобразованием символов имени файла: http://support.microsoft.com/kb/289627

person Mike    schedule 30.04.2012
comment
Я считаю, что решил проблему, переименовав загружаемые файлы на лету, но мне нужно каким-то образом получить файл на компьютере с Windows с двоеточием в имени файла. Наши клиенты каким-то образом делают это, поэтому это должно быть возможно. - person David; 30.04.2012
comment
@David: почему ты думаешь, что твои клиенты делают это? Вы уверены, что загрузка идет с машин Windows? - person Harry Johnston; 01.05.2012
comment
Будьте осторожны - вы можете создать что-то с именем FOO:BAR, но тогда у вас будет файл с именем FOO, содержащий поток данных с именем BAR (а также безымянный поток данных). В списке каталогов вы просто увидите FOO. - person dave; 01.05.2012
comment
Я получаю сообщение об ошибке с именем файла попытки загрузки. Я подтвердил, что по крайней мере некоторые из попыток загрузки были с компьютеров Windows. - person David; 01.05.2012
comment
Я знаю, что это не предназначено, но мне как-то нужно убедиться, что мое решение устранило проблему. Как мне создать файл с именем foo:bar? - person David; 01.05.2012
comment
Ссылка больше не работает - person BartoszKP; 20.02.2021

Другие замены, которые я нашел для зарезервированных символов:

” ‹ › ⁎ ∕ ⑊ \︖ ꞉ ⏐

Например, в питоне вы бы сделали:

fixed_name = orig_name.replace('\\\\','⑊')
forbidden_characters = '"*/:<>?\|'
unicode_characters = '”⁎∕꞉‹›︖\⏐'
for a, b in zip(forbidden_characters, unicode_characters):
    fixed_name = fixed_name.replace(a, b)
person aljgom    schedule 26.07.2018
comment
man 8 ntfs-3g заявляет: The forbidden characters are the nine characters " * / : < > ? \ |. Я насчитал 10 в вашем ответе, для чего этот: ? - person malat; 22.11.2020
comment
@malat в этом случае это не один символ, это будет замена двух символов \\ одним символом, похожим на , потому что замена его двумя заменяющими односимвольными обратными косыми чертами будет выглядеть так \\ - person aljgom; 24.11.2020

Судя по имени файла, которое вы указали, вполне вероятно, что символ, который у вас есть в ваших именах файлов, не является буквальным двоеточием :, который является зарезервированным символом в именах файлов Windows, а вместо этого представляет собой двоеточие полной ширины . Это символ Unicode, очень похожий на двоеточие, визуально окруженный пробелами, которые вы не можете удалить. Вы можете обращаться с ним точно так же, как с любым символом Unicode, кодовая точка U+FF1A.

person adraedin    schedule 24.07.2014
comment
это не касается вопроса ОП; хотя совет очень хороший, вы должны либо поместить его в комментарий к вопросу или задать/ответить на него в стиле вопросов и ответов, как в Jeopardy, сначала спросив, как использовать двоеточие в именах файлов Windows? вопрос, выбрав ответ в стиле вопросов и ответов и предоставив эту информацию там. - person ; 25.07.2014
comment
@vaxquis: наоборот, я думаю, что это действительно было причиной проблемы ОП; он думал, что в именах файлов, с которыми он пытался работать, были двоеточия, но они, вероятно, были двоеточиями во всю ширину. - person Harry Johnston; 26.07.2014
comment
@HarryJohnston, в таком случае я редактирую вопрос, чтобы явно включить эту информацию. - person ; 26.07.2014

Вы можете использовать CJK (китайский/японский/корейский)

":"

который довольно общий.

person imoc    schedule 22.03.2019

В настоящее время вы должны использовать URL-адрес WSL для получения инструкций: https://docs.microsoft.com/en-us/windows/wsl/install-win10.

Затем вы можете создать двоеточие в своем дистрибутиве Linux.

person KetZoomer    schedule 10.04.2021

КАК НАЗВАТЬ ФАЙЛ ИЛИ ПАПКУ, ИСПОЛЬЗУЯ СИМВОЛ, ПОХОЖИЙ НА ДВОРОТЫ

В приведенном ниже примере размер шрифта равен 12, за исключением символа, для которого заданы значения Subscript, Bold и размер шрифта 16. Код символа для символа, похожего на двоеточие, — 02F8.

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

Пример: (C˸) Symbol — нижний индекс, Calibri, Bold и размер шрифта 16.

*Использование Windows 7 и Word 2007

person Jeff    schedule 03.09.2018