中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-21 23:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理实现输出退行(第二篇) 查看 5,062 回复 32
16 谢谢修改 一时兴奋 发的快了点 嘿嘿~ ^^ 发表于 2006-12-29 02:57 ·  新西兰 奥克兰大区 奥克兰 Microsoft
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
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

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

@echo o ... 
17 好像13樓的代碼也有一些問題。。。 发表于 2006-12-29 19:09 ·  中国 江苏 苏州 电信
初级用户
★★
积分 144
发帖 66
注册 2006-11-30 00:37
19年会员
UID 72121
性别 男
状态 离线
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。。。。能改進這個問題否??
18 再加入if not 变量=="" command做吧 发表于 2006-12-29 19:44 ·  新西兰 奥克兰大区 奥克兰 Microsoft
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
19 发表于 2006-12-30 00:43 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
看到国外的批处理脚本写的那么精彩, 再看我们论坛对批处理的理解只是简单玩玩而已, 不免有些感触.

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

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

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


@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
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
redtek +5 2006-12-30 01:03
zh159 +5 2006-12-30 01:09
lxmxn +6 2006-12-30 05:02
业精于勤而荒于嬉,形成于思而毁于随。
20 发表于 2006-12-30 01:01 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
好像楼主要求输出在同一行,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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +5 2006-12-30 01:25
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
21 发表于 2006-12-30 01:08 ·  中国 河南 许昌 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了

国人本来就对英语不是很熟悉,只能具体方法具体应用了,更不用说编程了(估计真正会编程的不在多数)
22 发表于 2006-12-30 01:36 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
Originally posted by zh159 at 2006-12-30 01:08:
19楼的得全部输入完毕后才写入文件,如果原文件已有内容要加入就不行了

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


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

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

编程具体还在于理解.
业精于勤而荒于嬉,形成于思而毁于随。
23 发表于 2006-12-30 02:41 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
同意pengfei兄的想法,确实是,编程最大的障碍不在语言上,而是在思想和主观对其的理解上,很多地方我们需要和别人学,学的是他们考虑问题的方式和方法,我们真应该反省一下啦
我今后在论坛的目标就是做个超级坏人!!!
24 发表于 2006-12-30 03:09 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
看来9527兄对此也有同感, 算法和数据结构博大精深, 不深入理解的话编程也会寸步难行.

论坛的批处理需要向国外的同行学习. 用先进的算法来解决问题.
业精于勤而荒于嬉,形成于思而毁于随。
25 发表于 2006-12-30 03:26 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法
26 发表于 2006-12-30 04:11 ·  中国 河南 许昌 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
嗯,好的要学习,罗嗦的就......

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

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

[ Last edited by zh159 on 2006-12-29 at 03:13 PM ]
27 发表于 2006-12-30 04:34 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
算法就是解决问题的步骤, 好的算法可以提高效率, 简化程序. 论坛里发的批处理大都是解决一些不太复杂的问题, 可能对算法不太重要. 但做一些复杂的操作或超出DOS命令的应用范围时, 我们就得采取迂回战术, 用各种方法得到我们想要的结果. 你就会感到算法是多么重要.

熟悉各种算法对写脚本的重要性自然不言而喻, 否则一遇到复杂的问题就没撤了.
业精于勤而荒于嬉,形成于思而毁于随。
28 发表于 2006-12-30 04:39 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
Originally posted by vkill at 2006-12-30 03:26:
不一定越难的方法就是好方法,我们的目的是解决问题,我想我们最重要的是思路,不管什么方法,越多越好,不能一味的追求算法


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

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

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

[ Last edited by pengfei on 2006-12-30 at 04:41 AM ]
业精于勤而荒于嬉,形成于思而毁于随。
29 发表于 2006-12-30 04:43 ·  中国 河南 许昌 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线

不过要真想融会贯通还得下苦功夫才行(时间+精力啊)
30 发表于 2006-12-30 05:26 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
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 ]

认识自己,降伏自己,改变自己
,才能改变别人!
论坛跳转: