我基本上是一個最近被迫進入Windows世界的Linux人,所以我需要編寫一個bat腳本,但是我遇到了以下問題。爲什麼不在腳本中更新環境變量
這裏是我的.bat腳本
///////////////////////////
echo.
echo This is testbat script
echo -----------------------------------------------------------
echo.
if "%1"=="" (
echo "You did not enter an argument
) else (
set "myvar="
echo Argument is %1%
set myvar=%1%
if "%myvar%"=="%1%" (
echo myvar is %myvar%
) else (
echo myvar is not set to %1
)
)
////////////////////////////////////////////////////////
看來,我需要兩次運行此腳本以獲取MYVAR改變。
例如, 首先運行:
testbat.bat你好
OUTPUT:
這是testbat腳本 -------------- ---------
Argument is hello
myvar is not set to hello
第二次運行:
testbat.bat你好
OUTPUT:
這是testbat腳本 -----------------------
Argument is hello
myvar is hello
現在改變參數再見 第三輪:
testbat.bat再見
OUTPUT: 這是testbat腳本 -----------------------
Argument is bye
myvar is not set to bye (In fact, it is still hello here)
RUN第四(同輸入作爲第三):
> testbat.bat bye
OUTPUT: 這是testbat腳本 -----------------------
Argument is bye
myvar is bye (Finally gets updated)
////////////////////////////////////
我的問題是爲什麼腳本沒有'第一次更新環境變量?
爲什麼我需要再次運行腳本才能讓變量更改爲腳本中的新值?我使用SET命令並發現該值在環境中已更改,爲什麼腳本輸出反映舊值。當然,在腳本完成之後,環境中的值可能不會改變,不確定。
我正在運行腳本,然後使用向上箭頭來編輯命令行,如果這有什麼區別,它似乎並不是。
好像它需要一定的時間有限量的設置生效。 –
你在循環內運行腳本嗎? – konsolebox
不,這是一個將目錄路徑作爲輸入並計算該目錄中每個文件的CRC並使用CRC信息創建(或更新)該目錄中的現有文件的單次鏡頭。 – user1725779