回复 4# marya - @echo off
-
- set batchmode=0
- :main
-
- rem menu
- if "%batchmode%"=="1" goto :EOF
- echo ===============================
- echo 1.功能abc
- echo 2.功能def
- echo 3.根据a.txt定批量行
- set /p mode=選択:
-
- if "%mode%"=="1" goto :功能abc
- if "%mode%"=="2" goto :功能def
- if "%mode%"=="3" goto :BATCH_MODE
-
- pause
- exit 0
-
- :功能abc
- echo RUN-功能abc
- goto main
-
- :功能def
- echo RUN-功能def
- goto main
-
- :BATCH_MODE
- set batchmode=1
- for /f "delims=, tokens=1,2" %%i in (a.txt) do (
- echo 将要行%%j
- call :%%i
- )
- set batchmode=0
- goto main
复制代码 去掉了可能产生疑问的BATCH_RUN标签。
和你的想法还有2L的区别是 goto :%%i 变成了 call :%%i
这个把标签当作“函数”执行。- @echo off
- set /a n=1
- call :test
- call :test
- call :test
- pause
- exit 0
-
- :test
- echo "test%n%"
- set /a n+=1
- goto :EOF
复制代码 将输出
test1
test2
test3
从 标签 到 "GOTO :EOF" 为函数的执行流程,走到goto :EOF后,回到call所在行,然后执行下面的语句。
用goto的话,是直接跳转过去,不回来。 |