Команда Windows для преобразования окончаний строки Unix?
Есть ли команда Windows для преобразования окончаний строк файла?
У нас есть test.bat , который нам нужно запустить, чтобы запустить наш сервер. Мы используем Perforce, и нам нужно иметь окончание строк unix в нашей рабочей области. По какой-то причине нам не разрешено изменять окончания строк для Windows в наших рабочих пространствах. Однако сервер работает в Windows.
Каждый раз, когда я должен запускать bat файл, я открываю его в Notepad ++ и выбираю Edit → EOL conversion → Windows. Есть ли способ автоматизировать это, так что нам не нужно вручную изменять окончание строки каждый раз, когда мы синхронизируемся с Perforce?
Это можно сделать очень легко с помощью команды more , которая включена в Windows NT и более поздних версиях. Чтобы преобразовать input_filename , который содержит UNIX EOL (конец строки) \n – output_filename , который содержит Windows EOL \r\n , просто выполните следующее:
Команда more имеет дополнительные параметры форматирования, о которых вы, возможно, и не подозреваете. Запустите more/? , чтобы узнать, что еще может сделать more .
Используйте утилиту unix2dos. Вы можете скачать бинарные файлы здесь.
Вы можете сделать это без дополнительных инструментов в VBScript:
Поместите вышеуказанные строки в файл unix2dos.vbs и запустите его следующим образом:
Вы также можете сделать это в PowerShell:
который можно было бы еще более упростить:
Вышеуказанный оператор работает без явной замены, потому что Get-Content неявно разбивает входные файлы на любой тип linebreak (CR, LF и CR-LF), а Set-Content объединяет входной массив с разрывами строк Windows (CR- LF) перед записью в файл.
Я имел дело с проблемами CRLF поэтому я решил создать действительно простой инструмент для конвертации (в NodeJS):
Так что если у вас есть NodeJS с установленным npm, вы можете попробовать это:
Путь может быть настроен динамически с помощью регулярного выражения Glob (то же, что и в оболочке).
Так что, если вы можете использовать NodeJS, это действительно просто, и вы можете интегрировать эту команду для преобразования всего рабочего пространства в желаемые окончания строк.
Windows ‘MORE не надежна, она неизбежно разрушает TAB и добавляет строки.
unix2dos также является частью Minig/MSYS, Cygutils, GnuWin32 и других коллекций двоичных портов unix – и может быть уже установлен.
Если python, этот однострочный конвертер преобразует любые окончания строк в текущую платформу – на любой платформе:
Или поместите однострочный вкладыш в .bat/shell script и на PATH в соответствии с вашей платформой:
и используйте этот инструмент, например
Опираясь на TampaHaze и MD XF полезные ответы.
Это изменит все файлы .txt в текущем каталоге с LF на CRLF в командной строке.
Если вы не хотите проверять каждое изменение
Включить подкаталоги изменить
Чтобы сделать все это в пакетном файле, включая подкаталоги, не предлагая использовать ниже
Мой вклад в это, преобразование нескольких файлов в папку:
for %%z in (*.txt) do (for /f «delims=» %%i in (%%z) do @echo %%i)>%%z.tmp
Вы можете создать простой пакет script, чтобы сделать это для вас:
Затем запустите и будет мгновенно преобразован в конец строки DOS.
На основании ответа Endoro, но чтобы сохранить пробелы, попробуйте следующее:
Я клонировал свой проект git, используя git bash на windows . Все файлы имели LF окончания. Наш репозиторий по умолчанию имеет окончания CRLF .
Я удалил проект, а затем снова клонировал его с помощью Windows Command Prompt . Окончания CRLF были тогда целы. В моем случае, если бы я изменил окончание проекта, это привело бы к огромным усилиям и вызвало бы проблемы для моих товарищей по команде. Итак, сделал это так. Надеюсь, это кому-нибудь поможет.
Я беру курс AWS, и мне часто приходилось копировать текстовые поля веб-форм AWS в Блокнот Windows. Таким образом, я получаю текст с разделителями LF только в своем буфере обмена. Я случайно обнаружил, что вставив его в мой редактор Delphi, а затем нажав Ctrl + K + W, мы напишем текст в файл с разделителями CR + LF. (Бьюсь об заклад, многие другие редакторы IDE сделали бы то же самое).
Для преобразования UNIX (LF) в Windows (CR-LF) используйте следующую команду
Если у вас есть bash (например, git bash), вы можете использовать следующий скрипт для конвертации из unix2dos:
аналогично, чтобы конвертировать из dos2unix:
Преобразование окончаний строк Unix в Windows
Недавно я вернулся в Windows из Linux. У меня есть файлы с CRLF, некоторые с LF и некоторые из них смешанные. Есть ли утилита, которая поможет мне найти все мои файлы, связанные с Unix, и преобразовать их в соответствующие файлы с завершенным CRLF?
Утилита должна работать в Windows, а не в Linux. Я уже переехал. Я бы предпочел не устанавливать Cygwin , если я могу его избежать.
12 ответов
Вы можете конвертировать их с помощью утилиты unix2dos на вашей платформе Linux. Существуют версии unix2dos для Windows .
Если у вас установлен Perl, вы также можете использовать этот один вкладыш:
Вот простой и быстрый способ.
Перетащите текстовый файл в Chrome (я не знаю других браузеров), а затем вырезаем и вставляем обратно в исходный файл:)
Например: sfk addcr -dir . -file .txt -norec
изменяет LF-окончания в CR /LF для Windows, на всех .txt-файлах текущего каталога, но НЕ внутри подкаталогов (без рекурсии).
Но эта программа намного больше, чем просто.
В Cygwin вы можете конвертировать между файлами Unix и DOS AKA Windows с помощью двух встроенных утилит:
Преобразование в формат DOS CR /LF:
Преобразуйте обратно в формат Unix CR:
Файл остается на месте с тем же именем.
Я собираюсь бросить это решение там. Гит сделает это. Смотрите это сообщение
Итак, теоретически вы можете сделать это для преобразования всего дерева
Измените crlf на lf , если вы хотите пойти в другую сторону. ПРИМЕЧАНИЕ: вы еще не закончили, продолжайте читать
Введите git status , чтобы увидеть, какие файлы будут затронуты. Возможно, вам придется добавить строки, например
и т. д. до .gitattributes , чтобы избежать преобразования определенных файлов. Вы также можете указать определенные файлы как текст
Затем просто повторите эти 2 строки после редактирования .gitattributes
Затем снова используйте git status , чтобы узнать, какие файлы будут изменены. Когда вы уверены, что все файлы, которые вы хотите затронуть, перечислены в git status , а затем зафиксируйте
теперь проверьте все файлы снова
Теперь у них должно быть все, что у вас есть,
** ПРИМЕЧАНИЕ. Если вы уже использовали git, пропустите первые три команды git. Если вы не использовали git, теперь вы можете удалить файл .gitattributes и .git .
** Резервное копирование файлов: git rm —cached -r удаляет их все (хотя они теоретически в вашем git repo (папка .git ), так как они восстанавливаются с помощью последней команды git reset —hard . Просто, поскольку файлы удаляются, лучше всего их резервировать.
В моем дистрибутиве Linux есть две небольшие утилиты: fromdos и todos , которые я использую для этой задачи.
Используйте текстовый редактор, который понимает оба конца строки, например SciTE или Notepad ++ , если вам не нужно преобразовывать всю строку, заканчивающуюся во всех ваших файлах, но просто не хотите видеть весь файл сгруппирован в первую строку.
Существует много способов перевода символов eoln в файлы TEXT, и у каждого есть любимый.
Но я всегда переношу файлы с Linux на Windows в режиме BINARY, затем открываю файлы TEXT в Windows с помощью редактора, способного открывать оба типа, и при необходимости сохранять их в любой форме.
Я использовал редактор файлов Programmers для этого, но Notepad ++ тоже может это сделать. WordPad также полезен [по крайней мере, для просмотра файлов с завершенным LF].
Я думаю о простых текстовых файлах, которые могут возникнуть в Linux, и их нужно читать в стандартном (стандартном) мире Windows. Я не уверен, что вы имели в виду под «unix-touched files».
Чтобы предложить дополнительные параметры (хотя мне больше всего понравился запрос пользователя user45832 ):
Онлайн-преобразователи
Пакетный /DOS однострочный (удаляет пустые строки) :
Powershell:
Получил последние два отсюда
Преобразование окончаний строки Unix в конец строки Windows:
Преобразование окончаний строк Windows в конец строки Unix:
Старые версии awk не включают sub . В таких случаях используйте ту же команду, но замените awk на gawk или nawk .
В Википедии есть решение в cmd:
В PowerShell существуют различные способы сделать это, изменив то, что было сделано в на этом вопросе .
Это также можно сделать в VBScript и JScript , которые также являются инструментами, которые уже доступны в Windows без установки стороннего приложения.
Я использовал, чтобы открыть файл в ‘edit’ и сохранить, поскольку это было выполнено .
Преобразование окончаний строк Unix в Windows
Недавно я вернулся в Windows из Linux. У меня есть файлы с CRLF, некоторые с LF и некоторые из них смешанные. Есть ли утилита, которая поможет мне найти все мои файлы, связанные с Unix, и преобразовать их в соответствующие файлы с завершенным CRLF?
Утилита должна работать в Windows, а не в Linux. Я уже переехал. Я бы предпочел не устанавливать Cygwin , если я могу его избежать.
13 ответов
Вы можете конвертировать их с помощью утилиты unix2dos на вашей платформе Linux. Существуют версии unix2dos для Windows .
Если у вас установлен Perl, вы также можете использовать этот один вкладыш:
Вот простой и быстрый способ.
Перетащите текстовый файл в Chrome (я не знаю других браузеров), а затем вырезаем и вставляем обратно в исходный файл:)
Тот, который я нашел лучше всего для рекурсивного прохождения папок, позволяя фильтровать файлы и позволяя простой поиск «\ r \ n» и заменяя его просто «\ n», был Notepad ++ .
Notepad ++ — одна из лучших бесплатных программ для разработчиков с открытым исходным кодом для Windows. Это очень просто и мощно. Он обрабатывал строку, заканчивающую поиск /замену просто отлично. Подрядчик проверяет кучу файлов .c и .h в нашем репозитории с окончанием строки Linux \ r \ n, но поскольку большинство людей стандартизовано для инструментов сборки Windows /Eclipse, файлы не будут создаваться до тех пор, пока окончательные строки не будут преобразованы .
Например: sfk addcr -dir . -file .txt -norec
изменяет LF-окончания в CR /LF для Windows, на всех .txt-файлах текущего каталога, но НЕ внутри подкаталогов (без рекурсии).
Но эта программа намного больше, чем просто.
В Cygwin вы можете конвертировать между файлами Unix и DOS AKA Windows с помощью двух встроенных утилит:
Преобразование в формат DOS CR /LF:
Преобразуйте обратно в формат Unix CR:
Файл остается на месте с тем же именем.
Я собираюсь бросить это решение там. Гит сделает это. Смотрите это сообщение
Итак, теоретически вы можете сделать это для преобразования всего дерева
Измените crlf на lf , если вы хотите пойти в другую сторону. ПРИМЕЧАНИЕ: вы еще не закончили, продолжайте читать
Введите git status , чтобы увидеть, какие файлы будут затронуты. Возможно, вам придется добавить строки, например
и т. д. до .gitattributes , чтобы избежать преобразования определенных файлов. Вы также можете указать определенные файлы как текст
Затем просто повторите эти 2 строки после редактирования .gitattributes
Затем снова используйте git status , чтобы узнать, какие файлы будут изменены. Когда вы уверены, что все файлы, которые вы хотите затронуть, перечислены в git status , а затем зафиксируйте
теперь проверьте все файлы снова
Теперь у них должно быть все, что у вас есть,
** ПРИМЕЧАНИЕ. Если вы уже использовали git, пропустите первые три команды git. Если вы не использовали git, теперь вы можете удалить файл .gitattributes и .git .
** Резервное копирование файлов: git rm —cached -r удаляет их все (хотя они теоретически в вашем git repo (папка .git ), так как они восстанавливаются с помощью последней команды git reset —hard . Просто, поскольку файлы удаляются, лучше всего их резервировать.
В моем дистрибутиве Linux есть две небольшие утилиты: fromdos и todos , которые я использую для этой задачи.
Используйте текстовый редактор, который понимает оба конца строки, например SciTE или Notepad ++ , если вам не нужно преобразовывать всю строку, заканчивающуюся во всех ваших файлах, но просто не хотите видеть весь файл сгруппирован в первую строку.
Существует много способов перевода символов eoln в файлы TEXT, и у каждого есть любимый.
Но я всегда переношу файлы с Linux на Windows в режиме BINARY, затем открываю файлы TEXT в Windows с помощью редактора, способного открывать оба типа, и при необходимости сохранять их в любой форме.
Я использовал редактор файлов Programmers для этого, но Notepad ++ тоже может это сделать. WordPad также полезен [по крайней мере, для просмотра файлов с завершенным LF].
Я думаю о простых текстовых файлах, которые могут возникнуть в Linux, и их нужно читать в стандартном (стандартном) мире Windows. Я не уверен, что вы имели в виду под «unix-touched files».
Чтобы предложить дополнительные параметры (хотя мне больше всего понравился запрос пользователя user45832 ):
Онлайн-преобразователи
Пакетный /DOS однострочный (удаляет пустые строки) :
Powershell:
Получил последние два отсюда
Преобразование окончаний строки Unix в конец строки Windows:
Преобразование окончаний строк Windows в конец строки Unix:
Старые версии awk не включают sub . В таких случаях используйте ту же команду, но замените awk на gawk или nawk .
В Википедии есть решение в cmd:
В PowerShell существуют различные способы сделать это, изменив то, что было сделано в на этом вопросе .
Это также можно сделать в VBScript и JScript , которые также являются инструментами, которые уже доступны в Windows без установки стороннего приложения.
Я использовал, чтобы открыть файл в ‘edit’ и сохранить, поскольку это было выполнено .