中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理实现输出退行(第二篇)
« [1] [2] [3] »
作者:
标题: 批处理实现输出退行(第二篇) 上一主题 | 下一主题
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 16 楼』:  谢谢修改 一时兴奋 发的快了点 嘿嘿~ ^^



  Quote:
Originally posted by rochan at 2006-12-28 12:55 PM:
9楼代码有点误差..依次输入 1 2 3 4 5 6 7 8  后 k.txt文件中 会出现 8642打开 ECHO。...而不是  87654321

我改了一下..测试过了.成功!!
代码如下:

[code]@echo o ...



2006-12-29 02:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
weapfe
初级用户




积分 144
发帖 66
注册 2006-11-30
状态 离线
『第 17 楼』:  好像13樓的代碼也有一些問題。。。

9楼代码有点误差..依次输入 1 2 3 4 5 6 7 8  后 k.txt文件中 会出现 8642打开 ECHO。...而不是  87654321

我改了一下..测试过了.成功!!
代码如下:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------

@echo off
if not exist k.txt echo. >k.txt
:x
set /p a=<k.txt
set /p b=输入的字符:
:::echo %b% >>k.txt
echo %b%%a% >k.txt
goto x


運行後,我輸入987後,再連續點3次回車,關閉CMD後,打開k.txt看為777789。。。。能改進這個問題否??

2006-12-29 19:09
查看资料  发送邮件  发短消息 网志  OICQ (261372684)  编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 18 楼』:  再加入if not 变量=="" command做吧



2006-12-29 19:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 19 楼』:  

看到国外的批处理脚本写的那么精彩, 再看我们论坛对批处理的理解只是简单玩玩而已, 不免有些感触.

国外写的批处理不但对算法有很深的研究, 对三种基本结构的使用也很精通. 似乎中国人对批处理研究却没那么深入. 原因在于没有把编程的思想应用到批处理中来.

其实批处理脚本有很好的灵活性, 甚至可以模拟实现一些高级语言的功能. 这又建立在对算法的研究的数据结构的理解上. 如果大家能把这两点做好, 相信可以把论坛的批处理推水平推向一个更高的层次, 使批处理有更广的应用范围, 吸引更多的人来交流学习~!~

这个问题我采用数组的方法来解决, 当然不止这一种方法:
@echo off

setlocal enabledelayedexpansion

set num=0

:go

set /a num+=1

set /p ii%num%=Input %num% number:

if %num% lss 10 goto go

for /l %%i in (%num%,-1,1) do echo !ii%%i!

pause


   此帖被 +16 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-12-30 01:03
评分人:【 zh159 分数: +5  时间:2006-12-30 01:09
评分人:【 lxmxn 分数: +6  时间:2006-12-30 05:02




业精于勤而荒于嬉,形成于思而毁于随。
2006-12-30 00:43
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 20 楼』:  

好像楼主要求输出在同一行,pengfei的代码做一点修改:
@echo off

setlocal enabledelayedexpansion

set num=0

:go

set /a num+=1

set /p ii%num%=Input %num% number:

if %num% lss 10 goto go

for /l %%i in (%num%,-1,1) do @set/p=!ii%%i!<nul

pause


   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-12-30 01:25




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-30 01:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 21 楼』:  

19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了

国人本来就对英语不是很熟悉,只能具体方法具体应用了,更不用说编程了(估计真正会编程的不在多数)

2006-12-30 01:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by zh159 at 2006-12-30 01:08:
19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了

国人本来就对英语不是很熟悉,只能具体方法具体应用了,更不用说编程 ...

数组已经构造好, 灵活修改就可以适应各种需要了.

英语的确很重要, 但不是主要原因. 中国人善长思维, 最伟大的谋略家在中国, 同时中国有一流的数学家. 但中国人却写不出优秀的编译器, 至今也没有能够独立编写操作系统内核的奇才, 不免是中国教育模式的失败.

编程具体还在于理解.



业精于勤而荒于嬉,形成于思而毁于随。
2006-12-30 01:36
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 23 楼』:  

同意pengfei兄的想法,确实是,编程最大的障碍不在语言上,而是在思想和主观对其的理解上,很多地方我们需要和别人学,学的是他们考虑问题的方式和方法,我们真应该反省一下啦



我今后在论坛的目标就是做个超级坏人!!!
2006-12-30 02:41
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 24 楼』:  

看来9527兄对此也有同感, 算法和数据结构博大精深, 不深入理解的话编程也会寸步难行.

论坛的批处理需要向国外的同行学习. 用先进的算法来解决问题.



业精于勤而荒于嬉,形成于思而毁于随。
2006-12-30 03:09
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 25 楼』:  

不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法

2006-12-30 03:26
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 26 楼』:  

嗯,好的要学习,罗嗦的就......

想起前段时间有人贴上来一段老外的获取系统当前日期的代码,算法完善一大堆;而我们的基本上就两三行-_-|||

该用算法的用算法,该简化的就简化

[ Last edited by zh159 on 2006-12-29 at 03:13 PM ]

2006-12-30 04:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 27 楼』:  

算法就是解决问题的步骤, 好的算法可以提高效率, 简化程序. 论坛里发的批处理大都是解决一些不太复杂的问题, 可能对算法不太重要. 但做一些复杂的操作或超出DOS命令的应用范围时, 我们就得采取迂回战术, 用各种方法得到我们想要的结果. 你就会感到算法是多么重要.

熟悉各种算法对写脚本的重要性自然不言而喻, 否则一遇到复杂的问题就没撤了.



业精于勤而荒于嬉,形成于思而毁于随。
2006-12-30 04:34
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 28 楼』:  



  Quote:
Originally posted by vkill at 2006-12-30 03:26:
不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法

算法是解决问题的步骤, 兄强调解决问题的思路的重要性.  不是和不能一味追求算法矛盾吗?

研究算法的最终目的是写出运行效率高, 代码简洁的程序或脚本.

写复杂的脚本没有一个好的算法是不行的.

[ Last edited by pengfei on 2006-12-30 at 04:41 AM ]



业精于勤而荒于嬉,形成于思而毁于随。
2006-12-30 04:39
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 29 楼』:  


不过要真想融会贯通还得下苦功夫才行(时间+精力啊)

2006-12-30 04:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 30 楼』:  

19楼的代码其实就是对输入倒序排列输出而已.但对楼主的问题并不很适合.
而13楼基本已经给好的解决方法.

解决问题有多种方法,但不需要盲目追求算法的"先进性"
毕竟看一个程序的好坏不是看它的算法有多复杂,而是看它解决问题的效果.
小打小闹来解决问题,正是批处理的优点.
@echo off
if not exist k.txt echo. >k.txt
:x
set b=
set /p a=<k.txt
set /p b=输入的字符:
if "%b%"=="" goto :eof
echo %b%%a% >k.txt
goto x
[ Last edited by tao0610 on 2006-12-29 at 04:28 PM ]




认识自己,降伏自己,改变自己
,才能改变别人!
2006-12-30 05:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: