中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 请教批处理中的递归问题 上一主题 | 下一主题
smileseeker
中级用户




积分 316
发帖 83
注册 2005-3-1
状态 离线
『楼 主』:  请教批处理中的递归问题

我用的系统是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 不知道哪里错了 请各位大侠帮忙


2005-6-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 2 楼』:  

Re smileseeker:   在NT系列命令行中,重定向符号前加数字,将会表示重定向的设备的句柄,所以只要在%a%、%b%后加一个空格即可。
默认情况下,可以从键盘将命令输入(即 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编辑过]





※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-6-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
smileseeker
中级用户




积分 316
发帖 83
注册 2005-3-1
状态 离线
『第 3 楼』:  

高手就是高手看的头晕不过还好,知道在后面加个空格就好了谢谢哈


2005-6-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: