FOR /L %%parameter IN (start,step,end) DO command
不适用于DOS 6.22
。
循环/L
遍历一组数字的参数在 中不可用DOS 6.22
。
FOR
只能DOS 6.22
循环遍历一组文件。有内置工具可以解决这个问题吗?
在 *nix 系统上这对我来说不是什么大问题,但我尝试在装有 Win 3.1 和 DOS 6.22 的复古笔记本电脑上执行此操作,如问题所述:
答案1
你可以构建自己的 INC.BAT 并像下面这样使用它
测试脚本
@echo off
set count=0
:loop
call inc.bat %count% count
echo %count%
if not %count%==15 goto :loop
INC.BAT
@echo off
for %%L in (%0) do if "%%L"=="/" goto %1
REM Split and reverse number into _valueRev
set _remain=%1
set _valueRev=
:split_loop
set _loop=1
for %%a in (/%_remain%) do call %0// :split %1 %%a
if NOT "%_remain%"=="" goto :split_loop
goto :increment
:split
if %_loop%==2 goto :split_2
set _loop=2
set _remain=
set _valueRev=%3,%_valueRev%
goto :eof
:split_2
set _remain=%3
goto :eof
REM The main increment function
:increment
set _result=
set _carry=1
for %%d in (%_valueRev%) do call %0// :incDig %%d
if not "%_carry%"=="" call %0// :incDig 0
if NOT "%2"=="" set %2=%_result%
echo %_result%
REM Clear temp vars
FOR %%v in (_result _carry _loop _valueRev _valueRev_comma _digit _remain) do set %%v=
goto :eof
:incDig
set _digit=%2
if "%_carry%"=="" goto :endinc
set _carry=
if %2==9 set _digit=0
if %2==9 set _carry=1
if %2==8 set _digit=9
if %2==7 set _digit=8
if %2==6 set _digit=7
if %2==5 set _digit=6
if %2==4 set _digit=5
if %2==3 set _digit=4
if %2==2 set _digit=3
if %2==1 set _digit=2
if %2==0 set _digit=1
:endinc
set _result=%_digit%%_result%
:eof