我試圖找出一種方法來在 for 命令中回傳 if then 陳述句,這是到目前為止的代碼:
我們有一個名為:File.cfg的檔案,其中包含多個數字(不超過 6 個數字):
1
3
4
6
2
5
將這些數字設定為變數:
setlocal enabledelayed expansion
setlocal
set /a count=1
for /F "usebackq delims=" %%a in ( File.cfg ) do (
set line!count!=%%a
set /a count =1
)
然后嘗試執行回傳 if then 操作:
set /a count=0
echo 1 > list.txt
:Loop
set /a count =1
echo %count% > list.txt
FOR /F "usebackq delims= " %%a in (list.txt) do (
echo !line%%a!
if %%a==7 goto :eof
if !line%%a!==1 goto 1
if !line%%a!==2 goto 2
if !line%%a!==3 goto 3
if !line%%a!==4 goto 4
if !line%%a!==5 goto 5
if !line%%a!==6 goto 6
)
goto # 的示例
:1
code
code
code
goto loop
雖然最后批處理程式提前結束,主要是在計數 1 處。
最終輸出結果:
( echo !line1!
if 1 == 7 goto :eof
if !line1! == 1 goto 1
if !line1! == 2 goto 2
if !line1! == 3 goto 3
if !line1! == 4 goto 4
if !line1! == 5 goto 5
if !line1! == 6 goto 6
)
1
uj5u.com熱心網友回復:
除非您嘗試對某事進行概念驗證,否則不確定為什么您有復雜的代碼。根據我的經驗,實作預期結果的最簡單方法就是這樣做。
@echo off
for /F "usebackq delims=" %%a in ("File.cfg") do CALL :%%a
REM END OF MAIN Functions below
GOTO :EOF
:1
ECHO IN 1
GOTO :EOF
:2
ECHO IN 2
GOTO :EOF
REM Shortened for brevity
上面的代碼會輸出
IN 1
IN 3
IN 4
IN 6
IN 2
IN 5
如果您真的想使用陣列變數,那么最簡單的解決方案是以下代碼。
@echo off
setlocal enabledelayedexpansion
set "count=0"
for /F "usebackq delims=" %%a in ("File.cfg") do (
set /a "count =1"
set "line!count!=%%a"
)
FOR /L %%G IN (1,1,%count%) DO CALL :!line%%G!
REM END OF MAIN Functions below
GOTO :EOF
:1
ECHO IN 1
GOTO :EOF
:2
ECHO IN 2
GOTO :EOF
REM Shortened for brevity
上述代碼也會輸出
IN 1
IN 3
IN 4
IN 6
IN 2
IN 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366972.html
