中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]批处理脚本和程序设计语言的比较
作者:
标题: [讨论]批处理脚本和程序设计语言的比较 上一主题 | 下一主题
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『楼 主』:  [讨论]批处理脚本和程序设计语言的比较


  学习批处理已经有一段时间了,感觉批处理脚本和很多程序设计语言有很多地方是相通的,特别是在算法上更是相通。把其它程序设计语言的算法拿到批处理里面来同样适用,当然只是算法上是类同的道理,实际语句就不一样了。  ^_^

  就我个人感觉,批处理脚本和其它程序设计语言有以下方面是相通的(和大家熟悉的C语言比较吧):
---------------------------------------   变量的赋值
  批处理里面可以用set命令来赋值,而C语言里面是类似"int a=1"这样来赋值的。
   判断语句
  批处理里面可以用if来判断,同样,C语言里面也是用if。
   循环语句
  批处理脚本里面可以用for来实现循环功能(当然,要在批处理里实现循环还有其它的很多方法~),这和C里面的for大同小异。
   输入语句
  C语言里面可以用"Scanf()"函数来实现输入操作,而在批处理里面就可以用"set /p a="来替代了。
   输出语句
  C语言里面可以用"Printf()"函数来实现输出操作,在批处理里面就可以用一个简单的"echo"语句来完成了。
   函数
  C语言里面可以调用函数来直接完成一些任务,我觉得批处理里面的"call"和"goto"命令结合上标签之后,就相当于是一个"函数"了。可以先用批处理把要实现的功能写好,然后把代码保存在.bat文件或者.cmd文件里面,或者直接放在要调用它的批处理脚本里面,然后用"call"或者"goto"调用它就可以了,这就不相当于一个函数了么? =_=
   参数
  C语言里面有参数,批处理文件和命令同样可以接受各种参数。
   算法
  很多算法都是相通的。
---------------------------------------



  以上只是个人愚见,由于经验以及各方面的原因,难免会有疏漏和错误的地方,欢迎大家来讨论、批评、指正。如果还有其它方面的相通点我没有提到的,大家可以发帖来讨论,我会完善原文的内容的。

  可能有的朋友会认为,一个是脚本,一个是程序设计语言,两者没法比较,而我写这个文章的目的就是使大家对批处理有一个更新的认识,仅此而已。


Last edited by lxmxn on 2006-11-16 at 03:34 AM ]

   此帖被 +3 点积分      点击查看详情   
评分人:【 redtek 分数: +3  时间:2006-11-16 03:35


2006-11-16 03:33
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 2 楼』:  


函数
  C语言里面可以调用函数来直接完成一些任务,我觉得批处理里面的"call"和"goto"命令结合上标签之后,就相当于是一个"函数"了。可以先用批处理把要实现的功能写好,然后把代码保存在.bat文件或者.cmd文件里面,或者直接放在要调用它的批处理脚本里面,然后用"call"或者"goto"调用它就可以了,这就不相当于一个函数了么? =_=


个人认为这只是一个 sub,即过程。 函数要返回值的。而 Goto 只能通过一个公共变量来交换值




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-11-16 03:39
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

个人认为这只是一个 sub,即过程。 函数要返回值的。而 Goto 只能通过一个公共变量来交换值

  恩,还是有很多区别的,不过大体功能就是那样,都可以被调用来实现一些功能。


2006-11-16 03:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

都大同小易,只不过命令不同

2006-11-16 04:11
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
anakin
新手上路




积分 1
发帖 4
注册 2006-10-12
状态 离线
『第 5 楼』:  

不错.....都大同小异

2006-11-20 04:40
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kxows
初级用户





积分 31
发帖 11
注册 2006-11-7
状态 离线
『第 6 楼』:  

有同感

2006-11-20 05:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
hxuan999
中级用户

DOS之日


积分 337
发帖 161
注册 2006-11-4
状态 离线
『第 7 楼』:  

不错呀,应该写出代码来对比一下.



for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
2006-11-23 07:38
查看资料  发送邮件  发短消息  网志  OICQ (33899867)  编辑帖子  回复  引用回复
yunlin
新手上路





积分 5
发帖 7
注册 2006-11-25
状态 离线
『第 8 楼』:  

看不懂
第一次来
新手来着
顶你了 老公

2006-11-25 15:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kaidi
新手上路





积分 16
发帖 8
注册 2006-11-4
状态 离线
『第 9 楼』:  

学习学习再学习

2007-1-27 11:02
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ccwan
金牌会员




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

我比较赞同楼主的意见,计算机语言是有很多相通之处的。

对于7楼要求写出代码作为例子,我这里分别给出C语言和批处理的一个例子,很能说明问题。


题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?


C语言代码:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
}



批处理代码:
@echo off
cd.>test.txt
for /l %%i in (1 1 4) do (
for /l %%j in (1 1 4) do (
for /l %%k in (1 1 4) do (
if not "%%i"=="%%j" if not "%%j"=="%%k" if not "%%i"=="%%k" echo %%i%%j%%k>>test.txt&set/a num+=1
)
)
)
echo 共能组成%num%个互不相同且无重复数字的三位数>>test.txt
start notepad.exe test.txt


上例不难看出,解题思路一样,甚至代码都很相似 。

   此帖被 +9 点积分       点击查看详情   
评分人:【 redtek 分数: +9  时间:2007-1-27 21:27




三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
2007-1-27 21:23
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
TLang
初级用户

Alpha



积分 46
发帖 21
注册 2007-1-27
状态 离线
『第 11 楼』:  批处理能运算么?!!

批处理能运算么?!!



Impossible's Nothing!
2007-1-27 22:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zh159
金牌会员




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

Originally posted by TLang at 2007-1-27 09:48:
批处理能运算么?!!

set /a

当然,有一定的限制

2007-1-27 22:52
查看资料  发短消息  网志   编辑帖子  回复  引用回复
TLang
初级用户

Alpha



积分 46
发帖 21
注册 2007-1-27
状态 离线
『第 13 楼』:  

Originally posted by zh159 at 2007-1-27 09:52:

set /a

当然,有一定的限制


是,只是基本的运算

IF语句也比较简易

……

总之个人感觉WinXPSP2时代,虽然对命令行命令以及批处理命令有了很大扩展,但是都还是比较简易,基础的~~



Impossible's Nothing!
2007-1-27 23:27
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  

Originally posted by TLang at 2007-1-27 10:27:


是,只是基本的运算

IF语句也比较简易

……

总之个人感觉WinXPSP2时代,虽然对命令行命令以及批处理命令有了很大扩展,但是都还是比较简 ...


  呵呵,毕竟它是个脚本嘛,哪有高级语言那么多的函数可供你直接用呢?


2007-1-28 11:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 15 楼』:  

大炮、导弹、冲锋枪……在战争中缺了谁都不行,它们各有所长,它们将实用在战争中的每一个需要发挥它们特长的地方~:)

对于枪,我一辈子也可能摸不到或是用不到(当然也买不到,哈哈)。但是它对某些人来说失去它就等于失去了宝贵的生命~:)

把最适合或是适合用在某些环境的工具或是脚本或是某种语言,并尽可能让它们物尽所长,就是艺术~:)


(个人瞎说,权当玩笑,虽然还是梦想着能有一把枪~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-1-29 01:04
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: