2012-11-22 45 views
1

我有一個多行文件(約300 - 400行)每行有72個字符,我需要轉換成一行。如何避免批生產線限制(每行8191個字符)?

任何想法?

+0

http://stackoverflow.com/questions/9575644/line-length-limit-in- xp-batch-file – SomeWittyUsername

+2

我不認爲這是真的重複。鏈接試圖執行一個長行,而這個問題試圖將多個文本行連接成長文本行,大概是在輸出文件中。 – dbenham

+0

重寫cmd.exe,以便它可以這樣做...... :-) – Aacini

回答

2

這是可能的,假設你想要在文本文件中的連線在一行中。但是,即使您可以批量創建長行,您也將無法使用批處理讀取該行。正如Electro Hacker所說,您無法創建長度超過8191個字節的批處理環境變量。

XP SET /P將保留每行的前導空格。但Vista和更高版本上的SET /P剝離了領先空間。

此解決方案在每個連接線之間添加一個空格。

@echo off 
setlocal 
set "infile=test.txt" 
set "outfile=out.txt" 

>"%outfile%" (
    for /f usebackq^ delims^=^ eol^= %%A in ("%infile%") do <nul set /p "=%%A " 
) 
0

您無法打破操作系統的限制,無法打破Windows中的255個字符的路徑,並且您無法打破CMD解釋器的長度限制,就這麼簡單!

對不起,但你不能將該行存儲到一個變種,沒有辦法,不存在任何魔法,計算機是合乎邏輯的。

但這不是世界的盡頭,你可以在任何其他語言中做到這一點,我建議你使用Ruby或python(Ruby),這很容易,打開文件,將內容存儲到var,然後做你想做的事,不需要任何經驗,如果你需要一個例子來評論這個。

+0

確實,您無法創建長度超過8191個字節的變量,也無法讀取長度超過8191個字節的行。但是你可以在輸出文件中創建一個長度超過8191字節的行 - 參見[我的答案](http://stackoverflow.com/a/13518488/1012053) – dbenham

+0

嚴格說,cmd的限制幾乎不受OS的限制。並且您可以在路徑中使用超過MAX_PATH個字符。 – Joey

2

如果你要堅持標準Windows工具,PowerShell還仍不失爲一種選擇:

-join (Get-Content foo.txt) 
+0

+1 VBScript或JScript解決方案也是微不足道的,雖然不是這麼優雅:-)腳本宿主的優點是它與XP不同,它與PowerShell不同。 – dbenham

+0

和Vista的確如此。 – Joey