Board logo

标题: [讨论]批处理脚本和程序设计语言的比较 [打印本页]

作者: 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
    新手,进来学习一下!!