Подходящий способ выполнения этого преобразования не осуществляется через пакетный файл, а с использованием другого языка программирования, такого как JScript; таким образом, процесс преобразования является быстрым и надежным. Тем не менее, вам не нужна программа сотен строк, чтобы добиться такой простой замены. Файл две строки Пакетное ниже сделать это преобразование:
@set @a=0 /* & cscript //nologo //E:JScript "%~F0" <input.txt> output.txt & goto :EOF */
WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/\r\n/g,"\n"));
EDIT: Я добавил модификации к исходному коду, что позволяет включать несколько команд в пакетном части стандартным способом.
@set @a=0 /*
@echo off
set "OUTPUT_FILEPATH=C:\Path\Of\The\File.txt"
cscript //nologo //E:JScript "%~F0" < "%OUTPUT_FILEPATH%" > output.txt
move /Y output.txt "%OUTPUT_FILEPATH%"
goto :EOF */
WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/\r\n/g,"\n"));
Первая строка является трюком, который скрывает cscript
команды из кода JScript, поэтому составление этого гибрида .BAT файла не выдает ошибку.
В коде JScript: WScript.Stdin.ReadAll()
читать весь перенаправленный входной файл; это может вызвать проблемы, если файл огромный. Метод replace
использует регулярное выражение для идентификации текста для замены и размещения на его место второй строки; вы можете прочитать дополнительное описание этой темы по адресу this link. WScript.Stdout.Write
просто возьмите выходной сигнал и замените его на экран. Легко! Не так ли? ;-)
Я был удивлен, что я не мог найти это уже задавало где-то на SO – simonalexander2005
Преобразования текстовых файлов в Unix-стиль разрывы строк не является на самом деле ничего, кроме вывода каждой строки без заднего разрыва строки, а затем с явным выходом фид строки; поэтому вы можете найти что-то полезное при поиске чего-то вроде «эха без новой строки» и «символа новой строки» ... – aschipfl
В Интернете есть много статей о преобразовании текстового файла Windows в unix. Если у вас есть [JREPL.BAT приложение для обработки текста регулярного выражения] (http://www.dostips.com/forum/viewtopic.php?f=3&t=6044), вы можете нормально записать файл, а затем использовать ' вызовите jrepl "^" ""/u/f yourFile.txt/o -'. Или вы можете использовать канал для записи файла непосредственно в unix-формате: 'yourCommandThatGeneratesFile | jrepl "^" ""/u/o yourFile.txt'. – dbenham