командный файл + конвертировать LF в CR+LF

У нас есть файл сценария оболочки с именем LineFeed.sh, который выполняет функцию преобразования перевода строки (LF) в возврат каретки + перевод строки. Мы хотим, чтобы то же самое делал пакетный файл в Windows. Является ли это возможным?

Файл оболочки Linux

E_WRONGARGS=65
cat OutputList|while read -r Line 
do 
if [ -z "$Line" ]
then
echo "Usage: `basename $0` filename-to-convert"
exit $E_WRONGARGS
fi
NEWFILENAME=$Line.unx
CR='\015'  # Carriage return.
       # 015 is octal ASCII code for CR.
       # Lines in a DOS text file end in CR-LF.
       # Lines in a UNIX text file end in LF only.
tr -d $CR < $1 > $NEWFILENAME // here its deleting CR but i need to append LF
# Delete CR's and write to new file.
done
echo "Original DOS text file is \"$1\"."
echo "Converted UNIX text file is \"$NEWFILENAME\"."
exit 0

person user375191    schedule 24.06.2010    source источник
comment
google.com/search?q=unix2dos.bat   -  person Heinzi    schedule 24.06.2010
comment
@Heinzi: meta.stackexchange.com/questions/5280/embrace -не-гуглеры   -  person Joey    schedule 24.06.2010
comment
@Johannes: На самом деле, мой комментарий не просто гуглил вопрос, но содержал ответ. Да, я был слишком краток; подробная версия будет такой: вам не нужно делать это самостоятельно; есть скрипт под названием unix2dos, который делает именно то, что вам нужно, и есть доступные порты Windows, обычно называемые unix2dos.bat. Если вы погуглите это ключевое слово, вы найдете много источников для его загрузки. (Тем не менее, я понял вашу мысль, спасибо за ссылку.)   -  person Heinzi    schedule 25.06.2010
comment
Возможный дубликат команды Windows для преобразования окончаний строк Unix?   -  person phuclv    schedule 13.03.2017


Ответы (2)


Вы можете найти один из способов на этой странице Википедии:

TYPE unix_file | FIND "" /V > dos_file

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

Ключевым моментом здесь является то, что type знает, как читать окончания строк LF, а find затем преобразует их в CRLF. type сам по себе ничего не сделает с выводом (так и должно быть, потому что иметь команду, которая просто сбрасывает содержимое файла и возиться с ними, нехорошо :-)).

person Joey    schedule 24.06.2010

Основываясь на общеизвестном способе сделать это с помощью команды type, вы также можете преобразовать все файлы (или любой другой подстановочный знак, который вы предпочитаете) и сбросить их во временную папку, используя следующее:

md temp
for %a in (*.*) do type "%a" | find /v "" > temp\"%a"

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

person JJohnston2    schedule 18.07.2018