::Compare with available valid arguments
FOR /L %%i IN (1,1,!avArgc!) DO (
FOR /L %%j IN (1,1,!argc!) DO (
IF !avArgv[%%i]!==!argv[%%j]! (
echo Match: !avArgv[%%i]!
::Check the next option
SET /A nextArg=%%j
SET /A nextArg+=1
FOR /L %%n IN (!nextArg!,1,!nextArg!) DO (
IF !nextArg! LEQ !argc! (
echo next arg: !argv[%%n]!
call :CheckSubOption
)
)
)
)
)
在我上面的代碼示例中 - 我如何獲取循環變量,如%%j
,並在for循環中像這樣增加自己%%j++
?我有當前的解決方案(這是凌亂的,我不喜歡它)是創建一個新的變量,並將其設置爲%%j
值,然後遞增變量並開始使用像這樣的變量:如何在批處理腳本中增加循環變量?
::Check the next option
SET /A nextArg=%%j
SET /A nextArg+=1
'%% j'用'for'循環解析。這意味着,在循環內部它已經被解析了,所以它是一個固定值,而不是你可以改變的變量。恐怕,你必須忍受那個混亂的新變數。 – Stephan
'SET/A nextArg = %% j','/ a'不需要。它不應該傷害,但應該避免。另外,我懷疑這是爲了我們的緣故,但是用'::檢查下一個選項',不要在代碼塊中放置'::'命令,只是'rem'。可以通過調用具有引用變量的外部標籤來改變它,但實際上,它會比添加新變量更加混亂。 – Bloodied
謝謝Stephen回答我的問題。 @Arescet'::'和'rem'可以互換,因此可以在代碼塊中使用它們。代碼的工作方式與我的'::'添加註釋的方式一樣,加上'::'更容易被發現。 –