3 回答

TA貢獻1780條經驗 獲得超1個贊
在for循環和括號范圍內,有兩種方法可以設置和使用變量。
setlocal enabledelayedexpansion看到setlocal /?求助。這僅適用于XP / 2000或更高版本的Windows。然后使用!variable!而不是%variable%循環內...
使用批處理goto標簽創建批處理功能: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
批處理功能是非常有用的機制。

TA貢獻1812條經驗 獲得超5個贊
我為此奮斗了很多小時。這是我注冊命令行變量的循環。示例:Register.bat / param1:value1 / param2:value2
它的作用是循環所有命令行參數,并使用正確的名稱將變量設置為值。
之后,您可以只使用set value =!param1 !!設置value2 =!param2!
無論給定參數的順序如何。(所謂的命名參數)。請注意!<> !,而不是%<>%。
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 關注
- 663 瀏覽
添加回答
舉報