3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
在for循環(huán)和括號(hào)范圍內(nèi),有兩種方法可以設(shè)置和使用變量。
setlocal enabledelayedexpansion看到setlocal /?求助。這僅適用于XP / 2000或更高版本的Windows。然后使用!variable!而不是%variable%循環(huán)內(nèi)...
使用批處理goto標(biāo)簽創(chuàng)建批處理功能:Label。
例:
for /F "tokens=*" %%a in ('type %FileName%') do call :Foo %%a
goto End
:Foo
set z=%1
echo %z%
echo %1
goto :eof
:End
批處理功能是非常有用的機(jī)制。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
我為此奮斗了很多小時(shí)。這是我注冊(cè)命令行變量的循環(huán)。示例:Register.bat / param1:value1 / param2:value2
它的作用是循環(huán)所有命令行參數(shù),并使用正確的名稱將變量設(shè)置為值。
之后,您可以只使用set value =!param1 !!設(shè)置value2 =!param2!
無(wú)論給定參數(shù)的順序如何。(所謂的命名參數(shù))。請(qǐng)注意!<> !,而不是%<>%。
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%P IN (%*) DO (
call :processParam %%P
)
goto:End
:processParam [%1 - param]
@echo "processparam : %1"
FOR /F "tokens=1,2 delims=:" %%G IN ("%1") DO (
@echo a,b %%G %%H
set nameWithSlash=%%G
set name=!nameWithSlash:~1!
@echo n=!name!
set value=%%H
set !name!=!value!
)
goto :eof
:End
- 3 回答
- 0 關(guān)注
- 657 瀏覽
添加回答
舉報(bào)