2013-10-24 81 views
0

我可以有3個參數的文本文件:(讓我們稱之爲它的Test.txt)批處理文件通過腳本之間傳遞引用

One 
Two 
Three 

無處不在我讀它說,閱讀列表,recomended for /f %%A in (test.txt) do ...

我還可以加載每個元素作爲

< test.txt (
    set /p Var1= 
    set /p Var2= 
    set /p Var3= 
) 

但是,如果我只想要第二個元素是什麼?

它是否像傳遞一個值?

call test.bat %var1% %var2% %var3% 

,並在test.bat的 VAR2 =%2


現在採取這一一步,我已經通過了可變我test.bat的

令後說我對其進行一些更改,

set /p var2=%var2%+5 (I added 5) 

如何將此值發回給我的原始文檔,

我看到了,我應該使用這樣的

set /p var2="%var2%+5" 

這使得它的環境變量爲批處理不能處理退貨,

然而,不工作,當我在顯示VAR2我主文檔,它顯示爲空格

回答

0
set /p var2="%var2%+5" 

等待用戶輸入。/p表示提示符。把它拿出來,它應該工作。

2

按照你的樣品

@echo off 

    setlocal enableextensions 

    < values.txt (
     set /P var1= 
     set /P var2= 
     set /P var3= 
    ) 

    echo %var1% 
    echo %var2% 
    echo %var3% 

    rem NO NEED to pass variables, as they are shared 
    call secondFile.cmd 

    echo %var1% 
    echo %var2% 
    echo %var3% 

    endlocal 

和secondFile.cmd的內容

set var1=%var1%_textAdded 

沒有必要的環境變量傳遞給孩子批。他們共享相同的變量。如果子批次等待來自命令行的輸入,則需要它。

由於兩者共享相同的變量,因此子級中的更改在父級中可見。如果子進程不使用setlocal。 Setlocal標記批處理本地批處理文件中的所有更改。所以,如果secondFile.cmd寫成變量

setlocal 
    set var1=%var1%_textAdded 

變化將在父無可見。

在你的答案中,你正在使用set/P var .....作爲修改後的值。 Set /P用於提示用戶。將它與重定向文件一起使用(如在答案中),從重定向文件中獲取所提示的變量。但是直接將一個值賦值給一個變量需要的全部是set var=value,或者如果您需要進行一些算術運算,則使用set /A var=calcExpression

相關問題