Пакетный файл для преобразования многострочного текстового файла в один длинный текстовый файл? - PullRequest
0 голосов
/ 26 августа 2011

Я хотел бы написать простой пакетный файл Windows, который читает из стандартного ввода текстовый файл и записывает в стандартный вывод то же содержимое, но в виде одной длинной строки, вроде того, что вы получите, если замените каждую каретку.return-line-feed во входных данных пустым.

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

1 голос
/ 26 августа 2011

Если ваш файл не большой, вы можете вложить все в память.Пример в vbscript

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile="c:\test\file"
Set objFile=objFS.OpenTextFile(strFile)
strData = objFile.ReadAll
objFile.Close
Wscript.Echo Replace(vbCrLf,"",strData)
1 голос
/ 26 августа 2011

Вы можете вставить все строки вместе, если общий размер меньше 8192 символов.
И передайте результат в новый файл с одним CR / LF в конце.

setlocal EnableDelayedExpansion
set "text="
for/f "delims=" %%a in (multiLine.txt) do (
  set "text=!text!%%a"
)
>newFile.txt echo !text!

Вы также можете использовать set /p для вывода текста без CR / LF, но он не может обрабатывать знаки равенства и пробелы спереди.

РЕДАКТИРОВАТЬ: Первое решение работает, но есть проблемы с пустыми строками и восклицательными знаками.

Это решение, которое устраняет обе проблемы.

@echo off
setlocal EnableDelayedExpansion
set file=multiLine.txt

set "AllText="
for /F "tokens=2 delims=:" %%L in ('find /c /v "" %file%') do set /a "len=%%L"

<%file% ( 
    for /L %%n in (1,1,!len!) DO (
        set "line="
        set /p "line="
        set "AllText=!AllText!!line!"
    )
)
>newFile.txt echo(!AllText!
0 голосов
/ 26 августа 2011

с PowerShell:

(gc c:\file) -join ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...