2012-10-11 30 views
4

我想讀在批處理文件中的文本文件的全部內容的文本文件的全部內容。 我發現這一點:如何讀取批次

FOR/F 「delims =」 %% X IN(file.txt的)不設置內容= %% X

但 「內容」 變量只是有最後的行,我想將整個文件讀入一個變量。

+0

此,如果該文件是小於8191個字節,只能工作,因爲變量侷限於此。 – jeb

回答

4

從您的評論

有沒有什麼辦法,包括在內容上線!

我假設你想在你的content變量中換行,這可以用一個額外的變量來完成。

@echo off 
setlocal EnableDelayedExpansion 
set LF=^ 


rem ** The two empty lines are necessary 
set "content=" 

for /f "delims=" %%x in (file.txt) do (
    set "content=!content!%%x!LF!" 
) 
echo(!content! 

endlocal 
+0

它的工作原理!太棒了!非常感謝您 – Nabi

+0

這將打印什麼對我來說,我設置了正確的文件,並給該文件的內容。echo命令打印什麼。 –

+0

@TrevorHickey您應該打開一個新的問題,並鏈接到該一。你有沒有用'ECHO ON'測試它? – jeb

2

我不知道你是在「內容」變量尋找的格式,但是這個代碼應該做的伎倆(代碼簡單地設置內容爲空,然後通過file.txt的和複印件各行循環行成內容使用延遲擴展):

@echo off 
setlocal enabledelayedexpansion 
set content= 

for /f "delims=" %%x in (file.txt) do (set content=!content! %%x) 
echo !content! 

endlocal 
+2

但你應該呼應'!內容!''不VAR%'% – jeb

+0

@jeb感謝捕捉,編輯反映新的變化 –

+1

但你也應該使用'回聲(!內容!',而不是'回聲%含量% '',否則可能會出現特殊字符,如'ON'或'/?'或關鍵字的問題... – jeb

0

在Windows的現代仿製品,你也可以這樣做:

powershell -Command cat "<file name>" 

唯一的擡頭是:

powershell YourScriptFile.ps1 

,除非你修改系統的安全設置默認情況下無法執行......正如我在試圖建立「貓」命令時所學到的那樣。也就是說,對於這樣的一兩個襯裏,爲什麼在大多數現代系統上可以利用這個優勢來擊敗你的頭。