2014-01-08 90 views
2

是否有批處理文件讀取文本文件並將內容用作變量的命令?前段時間,我聽說過一個命令可以讀取文本文件的最後一行,並將其作爲批處理文件中的一個變量,但我不記得該命令是什麼或者它是否工作。有這樣的命令嗎?我已經試過了諸如:批處理命令從文本文件中提取變量

Set /a var < directory.bat\file.txt 

它返回一個0值,或

Set /p var < directory.bat\file.txt 

Set /i var < directory.bat\file.txt 

,這給錯誤「命令的語法不正確。我在「set」命令的正確軌道上,還是有一個完全不同的命令(或者我將不得不寫一個完整的不同的多行腳本來做到這一點)?

回答

3

set /p var=<directory\file.txt

這將抓住文本文檔的第一行。

+0

冷靜,一個for循環應太:'FOR/F%I IN(file.txt的)DO SET VAR =%i' –

+0

如果有在文本文件中只有一行,然後它會做一樣。但是,如果文本文件中有多行,它會將** last **行設置爲變量。有時候這可能會導致問題,如果文件最後有一個空行,並且延遲擴展。 – unclemeat

+0

@unclemeat,你可以隨時檢查變量,如果它定義或不是一個空字符串。 – brianadams

1

這裏是一個awk命令可以使用

@echo off 

for /f "tokens=*" %%a in ('awk "!/^$/{s=$0}END{print s}" myFile.txt') do (
    echo last line is %%a 
) 

您可以下載AWK herehere

4

此操作的典型形式是

for /f "delims=" %%a in (file.txt) do set var=%%a 

將設置var到整個最後一個非空行的內容。

for /f "delims=" %%a in (file.txt) do set var=%%a&goto next 
:next 

將設置var到第一非空白行

for /f "delims=" %%a in (file.txt) do set var=%%a&call :process 
... 
:process 
echo var=%var% 
goto :eof 

將與var集執行一個子程序來依次在每個非空行。

沒有樣本數據,無法確定哪種形式適合您的情況。

0
@echo off 
set str=^&Type file.txt 
echo %str%