标题: [讨论]批处理脚本和程序设计语言的比较
[打印本页]
作者: lxmxn
时间: 2006-11-16 03:33
标题: [讨论]批处理脚本和程序设计语言的比较
学习批处理已经有一段时间了,感觉批处理脚本和很多程序设计语言有很多地方是相通的,特别是在算法上更是相通。把其它程序设计语言的算法拿到批处理里面来同样适用,当然只是算法上是类同的道理,实际语句就不一样了。 ^_^
就我个人感觉,批处理脚本和其它程序设计语言有以下方面是相通的(和大家熟悉的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 ]
作者: electronixtar
时间: 2006-11-16 03:39
Quote: |
函数
C语言里面可以调用函数来直接完成一些任务,我觉得批处理里面的"call"和"goto"命令结合上标签之后,就相当于是一个"函数"了。可以先用批处理把要实现的功能写好,然后把代码保存在.bat文件或者.cmd文件里面,或者直接放在要调用它的批处理脚本里面,然后用"call"或者"goto"调用它就可以了,这就不相当于一个函数了么? =_= |
|
个人认为这只是一个 sub,即过程。 函数要返回值的。而 Goto 只能通过一个公共变量来交换值
作者: lxmxn
时间: 2006-11-16 03:48
Quote: |
个人认为这只是一个 sub,即过程。 函数要返回值的。而 Goto 只能通过一个公共变量来交换值 |
|
恩,还是有很多区别的,不过大体功能就是那样,都可以被调用来实现一些功能。
作者: vkill
时间: 2006-11-16 04:11
都大同小易,只不过命令不同
作者: anakin
时间: 2006-11-20 04:40
不错.....都大同小异
作者: kxows
时间: 2006-11-20 05:53
有同感
作者: hxuan999
时间: 2006-11-23 07:38
不错呀,应该写出代码来对比一下.
作者: yunlin
时间: 2006-11-25 15:48
看不懂
第一次来
新手来着
顶你了 老公
作者: kaidi
时间: 2007-1-27 11:02
学习学习再学习
作者: ccwan
时间: 2007-1-27 21:23
我比较赞同楼主的意见,计算机语言是有很多相通之处的。
对于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
上例不难看出,解题思路一样,甚至代码都很相似 。
作者: TLang
时间: 2007-1-27 22:48
标题: 批处理能运算么?!!
批处理能运算么?!!
作者: zh159
时间: 2007-1-27 22:52
Quote: |
Originally posted by TLang at 2007-1-27 09:48:
批处理能运算么?!! |
|
set /a
当然,有一定的限制
作者: TLang
时间: 2007-1-27 23:27
Quote: |
Originally posted by zh159 at 2007-1-27 09:52:
set /a
当然,有一定的限制 |
|
是,只是基本的运算
IF语句也比较简易
……
总之个人感觉WinXPSP2时代,虽然对命令行命令以及批处理命令有了很大扩展,但是都还是比较简易,基础的~~
作者: lxmxn
时间: 2007-1-28 11:55
Quote: |
Originally posted by TLang at 2007-1-27 10:27:
是,只是基本的运算
IF语句也比较简易
……
总之个人感觉WinXPSP2时代,虽然对命令行命令以及批处理命令有了很大扩展,但是都还是比较简 ... |
|
呵呵,毕竟它是个脚本嘛,哪有高级语言那么多的函数可供你直接用呢?
作者: redtek
时间: 2007-1-29 01:04
大炮、导弹、冲锋枪……在战争中缺了谁都不行,它们各有所长,它们将实用在战争中的每一个需要发挥它们特长的地方~:)
对于枪,我一辈子也可能摸不到或是用不到(当然也买不到,哈哈)。但是它对某些人来说失去它就等于失去了宝贵的生命~:)
把最适合或是适合用在某些环境的工具或是脚本或是某种语言,并尽可能让它们物尽所长,就是艺术~:)
(个人瞎说,权当玩笑,虽然还是梦想着能有一把枪~:)
作者: dglsy
时间: 2007-1-29 22:45
标题: hao
看起来真是差不很多
作者: qjbm
时间: 2007-1-30 04:08
学语言跟学乐器一样,一通百通.
作者: qzwqzw
时间: 2007-1-30 06:35
实际上批处理与Basic更相似
比如set,比如goto
因为有很大程度上的亲缘关系
同时它们本质上都属于解释型语言
相信比尔设计批处理语法时
大概参照了不少Basic的设计思路
作者: everest79
时间: 2007-1-30 07:39
早期应是basic,到了2k后,超来越向C靠齐了,更有其它操作系统命令行的一些特点
这几天在研究routeros,由于有着先前CMD的基础,上手很快,第一天就可以在命令行下进行完整配置了
我想,批处理与高级语言之间的区别就是它的整体概念,虽然我说不清,但的确这个概念是可以横跨大多数平台的
作者: qzwqzw
时间: 2007-1-30 11:05
router os吗?
是VRP还是IOS呢?
我对他们都还是一头雾水
感觉难度不在于命令行的用法
而在于概念与操作之间的关系
现在为止也就简单配个Telnet/VLAN/PPP什么的
离Network Engineer的距离还很遥远啊
作者: tao0610
时间: 2007-1-30 12:32
其实编程就是一种特别的数学.
概念和方法掌握了,再去解题就容易多了.
程序设计语言的差异也可以看成"公式"写法和结构上的差异,精细程度的差异.
作者: hngaoshou
时间: 2007-2-1 01:38
本人大力赞同
开始学习c/c++,的时候发现这两个语言差不多
后来开始接触p处理
结果语法用法可以说没有什么很大的区别
作者: 6622186
时间: 2007-3-12 12:29
感觉19楼说得不错.
作者: htysm
时间: 2007-3-12 23:07
个人感觉C语言和批处理最接近了.几年前学过C语言,现在忘的差不多了.
作者: Billunique
时间: 2007-3-21 08:18
关于函数的见解很劲道
作者: Lying
时间: 2010-6-26 09:51
诚谢
作者: kin11111
时间: 2010-6-26 11:30
新手,进来学习一下!!