如何批量回顯輸出值來自另一個檔案,內容是變數,如何決議?
例子:
環境.bat
@echo off
set a=123
set b = 456
set dev_env=%a%
set prod_env=%b%
copy_env.bat
@echo off
for /f "skip=1 eol=: tokens=2,3 delims== " %%i in (.\env.bat) do (
setlocal enabledelayedexpansion
set key=%%i
set value=%%j
echo !key!=!value! >> .\custom_variable.properties
endlocal
)
輸出:這不是我想要的
dev_env=%a%
prod_env=%b%
輸出:我想要....
dev_env=123
prod_env=456
uj5u.com熱心網友回復:
您需要env.bat在某個時候實際呼叫,以便設定變數。此外,因為echo !key!=!value!它本身會顯示dev_env=%a%等,所以您需要使用call第二遍變數擴展。
@echo off
setlocal enabledelayedexpansion
call env.bat
for /f "skip=1 eol=: tokens=2,3 delims== " %%i in (.\env.bat) do (
set key=%%i
set value=%%j
call echo !key!=!value! >>.\custom_variable.properties
)
uj5u.com熱心網友回復:
行。這里三點:
首先,檔案中的行
env.bat不會在env.bat檔案本身內部執行,而是在檔案中執行copy_env.bat,對嗎?出于這個原因,aand的值b不能通過“立即”和擴展來獲取,而是通過“延遲”和一個來代替。%a%%b%!a!!b!其次,在回圈中有
copy_env.batandsetlocal enabledelayedexpansion命令endlocal。這意味著當這樣的迭代結束時,在 for 迭代中設定的每個值都將丟失。為了保留下一個回圈的值,必須將 setlocal-endlocal 命令移出回圈。for /Ffor /Ffor /F最后,你有這個命令:
echo !key!=!value!它只顯示一行a=123,但你沒有一個真正分配這樣一個值的命令。有必要添加等效set !key!=!value!命令以便為后驗分配存盤這些值。
最終的作業程式是這些:
環境.bat:
@echo off
set a=123
set b = 456
set dev_env=!a!
set prod_env=!b!
copy_env.bat:
@echo off
setlocal enabledelayedexpansion
for /f "skip=1 eol=: tokens=2,3 delims== " %%i in (.\env.bat) do (
set key=%%i
set value=%%j
set !key!=!value!
echo !key!=!value! >> .\custom_variable.properties
)
endlocal
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415752.html
標籤:
