2012-05-07 23 views
0

我有一個特性文件,它具有以下鍵值對:如何讀取值形成批量文件屬性文件並存儲在一個變量

version 1 = test 
version 2 = qa 
version 3 = prd 

我想在一個變量在批處理文件中使用這些值。

我在DOS中使用for循環命令,但它取最後一個值version,即prdversion 3)。

以下是代碼:

set total=3 
for /f %%a in (1 2 %total%) do (
    echo %%a 
    FOR /F "eol=; tokens=2,2 delims==" %%i IN ('findstr /i "version%%a" test.txt') DO (
     set version%%a=%%i 
    ) 
) 

所有的變量version 1version 2version 3取值prd

有人可以提供解決方案嗎?

+0

該文件test.txt的,而不是一個屬性文件:) – user1049073

+0

難道你真的在DOS上,還是你使用Windows?示例文本文件中是否真的只有一行,或者是否有三行(每個名稱一個值對)?你的第一個FOR循環沒有任何意義 - 正如它所寫的,它正在尋找名稱爲1,2和3的文件並處理內容。你應該更好地描述你試圖達到的結果。 – dbenham

+0

我想將每個版本的值存儲在不同的變量中,即版本1版本2等等。而我只在windows上工作。 Sry for the dos標記 就文件而言,它包含3行每個名稱值對.. – user1049073

回答

2

您需要查看FOR命令的文檔(鍵入HELP FOR)。有很多變化看起來相似,但行爲有所不同。我沒有看到你發佈的代碼怎麼可能給你描述的結果,但無論如何...

如果您的文本文件名爲「test.txt的」,其內容如下所示

version1=test 
version2=qa 
version3=prd 

那麼你可以很容易地得到你想要的3個變量。

@echo off 
for /f "delims=" %%A in (test.txt) do set %%A 

但是你的文件有額外的空間,我不認爲你想要的。變量名稱中將包含空格,並且每個值中都有一個前導空格。我認爲以下內容會給你想要的。它將消除變量名稱中的空格,並消除值中的前導空格。

@echo off 
setlocal enableDelayedExpansion 
for /f "tokens=1* delims==" %%A in (test.txt) do (
    set name=%%A 
    set "name=!name: =!" 
    for /f "tokens=*" %%C in ("%%B") do set "!name!=%%C" 
) 
set version 

運行上面的腳本對這個文本文件:

version 1 = test 
version2=qa 
version 3 = two words 
version 4 = a = b 

給出了以下結果:

version1=test 
version2=qa 
version3=two words 
version4=a = b 
+0

如果輸出需要測試echo!version1 !,並且qa for echo!version2!請建議所需的更改。謝謝 – mogli

相關問題