Board logo

标题: 请教批处理中的递归问题 [打印本页]

作者: smileseeker     时间: 2005-6-3 00:00    标题: 请教批处理中的递归问题

我用的系统是win2000
现有1.bat和2.bat
1.bat的内容为:
del 1.txt
set a=10
set b=1
call 2.bat
echo end>>1.txt
2.bat的内容为:
echo %%%a%%%>>1.txt
set /a a=a-1
if %a% GTR 0 call 2.bat
echo %%%b%%%>>1.txt
set /a b=b+1
执行结果:
%10%
%9%
%8%
%7%
%6%
%5%
%4%
%3%
%2%
%1%
%1%
%2%
%3%
%4%
%5%
%6%
%7%
%8%
%9%
%10%
end
如果将2.bat中的%%%a%%%改为%a%,%%%b%%%改为%b%
结果变成:
10
打开 ECHO。
打开 ECHO。
10
end
黑窗体中:
C:\>del 1.txt
C:\>set a=10
C:\>set b=1
C:\>call 2.bat
C:\>echo 10 1>>1.txt
C:\>set /a a=a-1
C:\>if 9 GTR 0 call 2.bat
C:\>echo  9>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 8 GTR 0 call 2.bat
C:\>echo  8>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 7 GTR 0 call 2.bat
C:\>echo  7>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 6 GTR 0 call 2.bat
C:\>echo  6>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 5 GTR 0 call 2.bat
C:\>echo  5>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 4 GTR 0 call 2.bat
C:\>echo  4>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 3 GTR 0 call 2.bat
C:\>echo  3>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 2 GTR 0 call 2.bat
C:\>echo  2>>1.txt
打开 ECHO。
C:\>set /a a=a-1
C:\>if 1 GTR 0 call 2.bat
C:\>echo  1>>1.txt
C:\>set /a a=a-1
C:\>if 0 GTR 0 call 2.bat
C:\>echo  1>>1.txt
C:\>set /a b=b+1
C:\>echo  2>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  3>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  4>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  5>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  6>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  7>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  8>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo  9>>1.txt
打开 ECHO。
C:\>set /a b=b+1
C:\>echo 10 1>>1.txt
C:\>set /a b=b+1
C:\>echo end 1>>1.txt
不知道哪里错了
请各位大侠帮忙

作者: willsort     时间: 2005-6-3 00:00
Re smileseeker:
  在NT系列命令行中,重定向符号前加数字,将会表示重定向的设备的句柄,所以只要在%a%、%b%后加一个空格即可。

  Quote:
默认情况下,可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmd.exe,然后由 Cmd.exe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口。
下表将列出可用的句柄。
句柄 句柄的数字代号 说明
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
UNDEFINED 3-9 这些句柄由应用程序和各个具体工具单独定义
数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序并将前 10 个句柄中的任何一个重定向到该程序。要指定想使用的句柄,可在重定向操作符前面键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 > 或 < 操作符之后,必须指定要读取或写入数据的位置。可以指定文件名或另一个现有的句柄。

[此贴子已经被作者于2005-6-3 16:59:24编辑过]



作者: smileseeker     时间: 2005-6-3 00:00
高手就是高手看的头晕不过还好,知道在后面加个空格就好了谢谢哈