3 回答

TA貢獻1880條經驗 獲得超4個贊
在for循環和括號范圍內設置和使用變量有兩種方法。
setlocal enabledelayedexpansion看到setlocal /?求助。這僅適用于XP / 2000或更新版本的Windows。然后使用!variable!而不是%variable%在循環內...
使用批量轉到標簽創建批處理功能: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貢獻1946條經驗 獲得超3個贊
我堅持了好幾個小時。這是我注冊命令行變量的循環。示例: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 關注
- 507 瀏覽
添加回答
舉報