我想編寫一個簡單的Windows批處理文件,從標準輸入讀取的文本文件, 並寫到標準輸出相同的內容,但作爲一個長行,有點像你 得到什麼,如果你換成每節車廂通過空白返回輸入。將多行文本文件轉換爲一行長文本文件的批處理文件?
任何人都知道如何做到這一點?
我想編寫一個簡單的Windows批處理文件,從標準輸入讀取的文本文件, 並寫到標準輸出相同的內容,但作爲一個長行,有點像你 得到什麼,如果你換成每節車廂通過空白返回輸入。將多行文本文件轉換爲一行長文本文件的批處理文件?
任何人都知道如何做到這一點?
您可以將所有線粘貼到一起,如果總大小小於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!
謝謝你們兩位。這正是我正在尋找的。我是命令行的新手。對於陳述看起來非常有用,但需要花費一些努力去學習。謝謝。 – anton
不對我工作。 – user198989
@ user198989- _Doesnt對我沒有任何意義!你的電腦開着嗎?你有錯誤信息嗎?什麼是輸出? – jeb
如果你的文件不大,你可以把所有內容都塞進內存中。例如在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)
我還不知道windows腳本的任何內容,但謝謝你的例子。 – anton
使用PowerShell:
(gc c:\file) -join ''
我不知道任何關於你的答案是什麼意思,但我被它吸引,於是我擡起頭來對PowerShell的幾件事情,這是我從來沒有聽說過(我用窗多年,但從未使用命令行或腳本或編程窗口)。它看起來非常有用和強大,現在我想我想了解一些關於PowerShell的知識。謝謝。 – anton
那你試試? – steenhulthin
@steenhulthin - 我認爲,一個for語句循環直通輸入線將要走的路,但我不知道如何得到它的工作。下面的答案正是我想要的。 – anton