2017-08-01 87 views
0

所以我知道如何使用如何從文本文件中填充未定數量的變量?

set /p Myvar1="Enter your variable name/value: " 
set /p Myvar2="Enter your variable name/value: " 
set /p Myvar3="Enter your variable name/value: " 

保存字符串到一個文本文件從批列表,然後附加到一個文本文件

echo %Myvar1% %Myvar2% %Myvar3% >> Mylist.txt 

所以,當我在打開文本文件批處理文件,它可以顯示 爲列表:

SET "variables=" 
ECHO ================================================= 
ECHO    My list of stuff 
ECHO ================================================= 
< Mylist.txt (
    set /p MyVar1= 
    set /p MyVar2= 
    set /p MyVar3= 
) 
::set line 
ECHO -    [0] - %Myvar1% 
ECHO -    [1] - %Myvar1% 
ECHO -    [2] - %Myvar1% 

現在的問題是:

對於Mylist.txt文本文件中的每一行都必須在批處理文件上手動添加行。在提供的示例中,批處理設置爲顯示文本文件中的3行文本。如果文本文件有10行,它將只顯示前3行,因爲這是指定的內容。所以我想完成這個腳本的反面。

批處理文件應能夠:

  • 批處理文件讀取Mylist.txt
  • 對於Mylist.txt文件中的每一行,該批處理文件創建一個「編號變量」。
  • 每個「numerated變量」可以是可尋址的,所以用戶可以被提示選擇的列表1,2,3,4上的選項中的一個,等等
+0

相關:[cmd.exe(批處理)腳本中的[數組,鏈表和其他數據結構](https://stackoverflow.com/a/10167990)。 – aschipfl

回答

0

for迴路簡單的事情加一個計數器:

setlocal enabledelayedexpansion 
set i=0 
for /f "delims=" %%a in (mylist.txt) do (
    set /a i+=1 
    set var[!i!]=%%a 
) 
echo number of variables: %i%: 
set var[ 
echo --------- 
for /l %%a in (1,1,%i%) do echo variable %%a = %var[%%a]% 
+0

斯蒂芬,你的第四行應該是大寫的**'i' **嗎? – Compo

+0

@Compo:變量不區分大小寫:'%i%'='%I%'。出於一致性原因而更改。 – Stephan

+0

我的意思只不過是一個相對較新的劇本。 – Compo

0

變量名和它們的值保存到文件的最簡單的方法是重定向命令SET的輸出到文件。

set My >"%APPDATA%\MyVariables.txt" 

這句簡單的保存所有的環境變量與名稱和值名稱以My到當前用戶的應用程序數據目錄中的文件MyVariables.txt

而下面的命令行可以在一個批處理文件被用於重新從文件那些環境變量:

用於使用
for /F "usebackq delims=" %%I in ("%APPDATA%\MyVariables.txt") do set "%%I" 

同一命令行直接在命令提示窗口:

for /F "usebackq delims=" %I in ("%APPDATA%\MyVariables.txt") do set "%I" 

甲如果文件MyVariables.txt中的每一行確實按照預期從My開始,並且不想由例如PATH覆蓋的人操縱,那麼通過手動添加到文件MyVariables.txtPATH=開頭的行。

知道從文件加載了多少變量可能很有用。這可以用一個簡單的擴展來實現:

set "VariablesCount=0" 
for /F "usebackq delims=" %%I in ("%APPDATA%\MyVariables.txt") do set "%%I" & set /A VariablesCount+=1 

當然,如果有一個環境變量MyVariablesCount開始My然後用它的價值這個變量將也被保存到文件並重新加載從文件,該文件就沒有必要來計算從文件中設置的變量的數量。

對於理解使用的命令以及它們如何工作,打開命令提示符窗口中,執行有下面的命令,並完全讀取顯示每個命令的所有幫助頁面非常謹慎。

  • for /?
  • set /?

閱讀也是微軟文章關於Using Command Redirection Operators