Как быть в Windows с папками с символами «?» в названии?
Как быть в Windows с папками с символами "?" в названии? Суть такая, что я работаю с файлами линукса, обрабатываю их и потом обратно на линукс отправляю. А при копировании все файлы вида
feed.php?id=99
превращаются в
feed.php_id=99
С этим можно что-то сделать в плане настроек винды? Какие-то костыли, чтобы работать в винде с такими фолдерами... хоть как-то )
Можно написать скрипт, который будет сохранять оригинальные названия файлов, а потом при отправке их восстанавливать, например. Но я бы поставил виртуалку/wsl и обрабатывал файлы в ней - меньше потенциальных проблем.
Dwellss,
1.Используйте файловую систему для работы с файлами, где эти символы разрешены. Например линуксовую.
2.использовать в винде линуксовые инструменты для копирования файлов. Не уверен, что подойдет msys2 или какой-нибудь git bash (т.к. они используют микросовтовскую стандартную библиотеку), но вроде как утилиты использующие cygwin могут подобное делать (https://superuser.com/questions/1112132/how-to-cre...).
3.Копировать файлы на виндовые разделы из линукса
Возможно это ограничение не файловой системы, т.к. иногда мне попадались имена файлов, которые генерят некоторые программы, содержащие запрещенные символы. И я не мог эти файлы удалить с диска с помощью стандартных средств. Сейчас не скажу что за программа генерировала эти файлы и какие конкретно там были спец.символы.
Так что я думаю, что, возможно, это ограничение не файловой системы, а какого-то уровня выше. И если программа не использует этот уровень, то возможно она сможет создать файлы со спец.символами.
Но тут, на самом деле вопрос в другом. Вы же эти файлы обрабатываете чем-то. Даже если вы с помощью каких-то манипуляций сможете скопировать файлы сохранив спец.символы в имени, то скорее всего вы не сможете с этими файлами сделать ничего, даже открыть их вашим обработчиком и тем более записать изменения.
Мне видится достаточно простой путь обхода:
1. Перед копированием файлов составляем списко файлов для копирования
2.Копируем файлы по списку с переименованием (допустим просто ставим порядковый номер файла в списке)
3.Обрабатываем скоприованные файлы
4.Копируем файлы обратно по списку с обратным переименованием.
Думаю скрипт реализующий подобную схему можно написать достаточно просто.
Dwellss,
вариантов обхода нет. Проблема не в Windows а в NTFS
или заменяйте символ на другой, разрешенный, или используйте posix файловую систему, но винда с посикс системами напрямую не умеет.