精华内容
下载资源
问答
  • Bat文件编写

    千次阅读 2012-07-07 10:01:46
    扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。  首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下...
    没研究过, 学了这么长时间都不知, 碰到了才知!!!!!



    扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 
    首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

    其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命 令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分 不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。

    第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS 搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你 编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。

    第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是 自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存, 设置系统环境变量等。下面是一个运行于Windows 98下的autoexec.bat的示例:
    @ECHO OFF
    PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
    LH SMARTDRV.EXE /X
    LH DOSKEY.COM /Insert
    LH CTMOUSE.EXE
    SET TEMP=D:\TEMP
    SET TMP=D:\TEMP


    批处理的作用
    简单的说,批处理的作用就是自动的连续执行多条命令。 

    这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(>前面内容表示DOS提示符): 
    C:\>cd wps 
    C:\WPS>spdos
    C:\WPS>py 
    C:\WPS>wbx 
    C:\WPS>wps 
    如果每次用WPS之前都这样执行一遍,您是不是觉得很麻烦呢?

    好了,用批处理,就可以实现将这些麻烦的操作简单化,首先我们编写一个runwps.bat批处理文件,内容如下:
    @echo off
    c:
    cd\wps
    spdos
    py
    wbx
    wps
    cd
    以后,我们每次进入wps,只需要运行runwps这个批处理文件即可。

    常用命令

    echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 
    echo 表示显示此命令后的字符 
    echo off 表示在此语句后所有运行的命令都不显示命令行本身 
    @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 
    call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 
    pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 
    rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 

    例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 

      批处理文件的内容为:         命令注释: 

        @echo off           不显示后续命令行及当前命令行
    dir c:\*.* >a.txt       将c盘文件列表写入a.txt 
    call c:\ucdos\ucdos.bat    调用ucdos 
    echo 你好            显示"你好" 
    pause              暂停,等待按键继续 
    rem 准备运行wps         注释:准备运行wps 
    cd ucdos            进入ucdos目录 
    wps               运行wps   

    批处理文件的参数

    批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。 

    %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 

    例2:C:根目录下有一批处理文件名为f.bat,内容为:
    @echo off
    format %1

    如果执行C:\>f a:
    那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

    例3:C:根目录下一批处理文件名为t.bat,内容为:
    @echo off
    type %1 
    type %2 

    那么运行C:\>t a.txt b.txt 
    %1 : 表示a.txt
    %2 : 表示b.txt
    于是上面的命令将顺序地显示a.txt和b.txt文件的内容。


    特殊命令 

    if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 

    一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 

    1、if [not] "参数" == "字符串" 待执行的命令 

    参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

    例:if "%1"=="a" format a:

    2、if [not] exist [路径\]文件名 待执行的命令 
    如果有指定的文件,则条件成立,运行命令,否则运行下一句。

    如: if exist c:\config.sys type c:\config.sys 
    表示如果存在c:\config.sys文件,则显示它的内容。

    3、if errorlevel <数字> 待执行的命令 

    很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过 if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定 的数字,则条件成立,运行命令,否则运行下一句。

    如if errorlevel 2 goto x2

    二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 

    如:

    goto end 

    :end 
    echo this is the end 

    标号用“:字符串”来定义,标号所在行不被执行。 

    三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。

    注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。

    choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):

    CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

    描述:
         该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

    参数列表:
        /C     choices        指定要创建的选项列表。默认列表是 "YN"。

        /N                   在提示符中隐藏选项列表。提示前面的消息得到显示,
                            选项依旧处于启用状态。

        /CS                  允许选择分大小写的选项。在默认情况下,这个工具
                            是不分大小写的。

        /T     timeout        做出默认选择之前,暂停的秒数。可接受的值是从 0
                            到 9999。如果指定了 0,就不会有暂停,默认选项
                            会得到选择。

        /D     choice         在 nnnn 秒之后指定默认选项。字符必须在用 /C 选
                            项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

        /M     text           指定提示之前要显示的消息。如果没有指定,工具只
                            显示提示。

        /?                   显示帮助消息。

        注意:
        ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选
        择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,
        该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的
        ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0
        的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
        序排列。

    示例:
        CHOICE /? 
        CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
        CHOICE /T 10 /C ync /CS /D y
        CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
        CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"
       
    如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
    屏幕上会显示:
    确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?
       
       
    例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): 
    @echo off 
    choice /C dme /M "defrag,mem,end"
    if errorlevel 3 goto end
    if errorlevel 2 goto mem 
    if errotlevel 1 goto defrag 

    :defrag 
    c:\dos\defrag 
    goto end 

    :mem 
    mem 
    goto end 

    :end 
    echo good bye 

    此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择 d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的 程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。 

    四、for 循环命令,只要条件符合,它将多次执行同一命令。 

    语法:
    对一组文件中的每一个文件执行某个特定命令。

    FOR %%variable IN (set) DO command [command-parameters]

       %%variable   指定一个单一字母可替换的参数。
       (set)       指定一个或一组文件。可以使用通配符。
       command     指定对每个文件执行的命令。
       command-parameters
                  为特定命令指定参数或命令行开关。

    例如一个批处理文件中有一行: 
    for %%c in (*.bat *.txt) do type %%c 

    则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。


    批处理示例 

    1. IF-EXIST

    1)

    首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下: 
    @echo off 
    IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT 
    IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist 

    然后运行它:
    C:\>TEST1.BAT 

    如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。

    2)

    接着再建立一个test2.bat文件,内容如下: 
    @ECHO OFF 
    IF EXIST \%1 TYPE \%1 
    IF NOT EXIST \%1 ECHO \%1 does not exist 

    执行: 
    C:\>TEST2 AUTOEXEC.BAT 
    该命令运行结果同上。

    说明: 
    (1) IF EXIST 是用来测试文件是否存在的,格式为 
    IF EXIST [路径+文件名] 命令 
    (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 

    3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: 
    @echo off
    IF "%1" == "A" ECHO XIAO 
    IF "%2" == "B" ECHO TIAN 
    IF "%3" == "C" ECHO XIN 

    如果运行:
    C:\>TEST3 A B C 
    屏幕上会显示:
    XIAO
    TIAN
    XIN

    如果运行:
    C:\>TEST3 A B 
    屏幕上会显示
    XIAO
    TIAN 

    在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。 

    2、IF-ERRORLEVEL

    建立TEST4.BAT,内容如下:
    @ECHO OFF 
    XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败 
    IF ERRORLEVEL 0 ECHO 成功拷贝文件 

    然后执行文件:
    C:\>TEST4

    如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 

    IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。
    因此下面的批处理文件是错误的:
    @ECHO OFF 
    XCOPY C:\AUTOEXEC.BAT D:\ 
    IF ERRORLEVEL 0 ECHO 成功拷贝文件 
    IF ERRORLEVEL 1 ECHO 未找到拷贝文件 
    IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 
    IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 
    IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 

    无论拷贝是否成功,后面的: 

    未找到拷贝文件 
    用户通过ctrl-c中止拷贝操作 
    预置错误阻止文件拷贝操作 
    拷贝过程中写盘错误

    都将显示出来。 

    以下就是几个常用命令的返回值及其代表的意义: 
    backup 
    0 备份成功 
    1 未找到备份文件 
    2 文件共享冲突阻止备份完成 
    3 用户用ctrl-c中止备份 
    4 由于致命的错误使备份操作中止 

    diskcomp 
    0 盘比较相同 
    1 盘比较不同 
    2 用户通过ctrl-c中止比较操作 
    3 由于致命的错误使比较操作中止 
    4 预置错误中止比较 

    diskcopy 
    0 盘拷贝操作成功 
    1 非致命盘读/写错 
    2 用户通过ctrl-c结束拷贝操作 
    3 因致命的处理错误使盘拷贝中止 
    4 预置错误阻止拷贝操作 

    format 
    0 格式化成功 
    3 用户通过ctrl-c中止格式化处理 
    4 因致命的处理错误使格式化中止 
    5 在提示“proceed with format(y/n)?”下用户键入n结束 

    xcopy 
    0 成功拷贝文件 
    1 未找到拷贝文件 
    2 用户通过ctrl-c中止拷贝操作 
    4 预置错误阻止文件拷贝操作 
    5 拷贝过程中写盘错误 

    3、IF STRING1 == STRING2

    建立TEST5.BAT,文件内容如下: 
    @echo off 
    IF "%1" == "A" FORMAT A: 

    执行: 
    C:\>TEST5 A 
    屏幕上就出现是否将A:盘格式化的内容。 

    注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。
    如:if [%1]==[A] 或者 if %1*==A*

    5、GOTO

    建立TEST6.BAT,文件内容如下: 
    @ECHO OFF 
    IF EXIST C:\AUTOEXEC.BAT GOTO _COPY 
    GOTO _DONE
    :_COPY 
    COPY C:\AUTOEXEC.BAT D:\ 
    :_DONE 

    注意: 
    (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 
    (2) 标号的命名规则与文件名的命名规则相同。
    (3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。

    6、FOR

    建立C:\TEST7.BAT,文件内容如下: 
    @ECHO OFF 
    FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C 

    运行: 
    C:>TEST7

    执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。






    批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批 处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到 的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。 

      一.简单批处理内部命令简介 

      1.Echo 命令 

      打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 

      语法 

      echo [{on off}] [message] 

      Sample:@echo off / echo hello world 

      在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 

      2.@ 命令 

      表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 

      Sample:@echo off 

      @echo Now initializing the program,please wait a minite... 

      @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 

      3.Goto 命令 

      指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 

      语法:goto label (label是参数,指定所要转向的批处理程序中的行。) 

      Sample: 

      if {%1}=={} goto noparms 

      if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) 

      @Rem check parameters if null show usage 

      :noparms 

      echo Usage: monitor.bat ServerIP PortNumber 

      goto end 

      标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 

      4.Rem 命令 

      注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。 

      Rem Message 

      Sample:@Rem Here is the description. 

      5.Pause 命令 

      运行 Pause 命令时,将显示下面的消息: 

      Press any key to continue . . . 

      Sample: 

      @echo off 

      :begin 

      copy a:*.* d:\back 

      echo Please put a new disk into driver A 

      pause 

      goto begin 

      在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。 

     6.Call 命令 

      从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 

      语法 

      call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 

      参数 

      [Drive:}[Path] FileName 

      指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 

      7.start 命令 

      调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 

      入侵常用参数: 

      MIN 开始时窗口最小化 

      SEPARATE 在分开的空间内开始 16 位 Windows 程序 

      HIGH 在 HIGH 优先级类别开始应用程序 

      REALTIME 在 REALTIME 优先级类别开始应用程序 

      WAIT 启动应用程序并等候它结束 

      parameters 这些为传送到命令/程序的参数 

      执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 

      8.choice 命令 

      choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… 

      如: choice /c:dme defrag,mem,end 

      将显示 

      defrag,mem,end[D,M,E]? 

      Sample: 

      Sample.bat的内容如下: 

      @echo off 

      choice /c:dme defrag,mem,end 

      if errorlevel 3 goto defrag (应先判断数值最高的错误码) 

      if errorlevel 2 goto mem 

      if errotlevel 1 goto end 

      :defrag 

      c:\dos\defrag 

      goto end 

      :mem 

      mem 

      goto end 

      :end 

      echo good bye 

      此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都 以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。 

      9.If 命令 

      if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 

      1、if "参数" == "字符串"  待执行的命令 

      参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) 

      如if "%1"=="a" format a: 

      if {%1}=={} goto noparms 

      if {%2}=={} goto noparms 

      2、if exist 文件名  待执行的命令 

      如果有指定的文件,则条件成立,运行命令,否则运行下一句。 

      如if exist config.sys edit config.sys 

      3、if errorlevel / if not errorlevel 数字  待执行的命令 

      如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。 

      如if errorlevel 2 goto x2   

      DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。 
     

    posted on 2007-10-25 17:49 向左向右走 阅读(1714) 评论(2)  编辑 收藏 引用 所属分类: C/C++学习资料库

    展开全文
  • 批处理 Bat文件编写

    千次阅读 2014-03-29 14:47:50
    其实编写bat文件应用就这么点应该足够我们写出自己需要的BAT了,当然还有很多很多命令与使用方法我这里并没有提到,这些只是把大家带进门而已,至于如何修行,看大家自己的了。关键还是兴趣与大量的实践。 ...

    from http://my.oschina.net/u/131904/blog/112770

    其实编写bat文件应用就这么点应该足够我们写出自己需要的BAT了,当然还有很多很多命令与使用方法我这里并没有提到,这些只是把大家带进门而已,至于如何修行,看大家自己的了。关键还是兴趣与大量的实践。

      
      第一节:(主要是一些界面形式功能的实现以及初始化)
      1.“@echo off”--我们所写的BAT一开始一般都有这一句,这一句的作用是:使所有的命令响应隐藏。“@”--本行命令不回显。(本来如果你用echo off就可以了,但是还是能够看到echo off这条命令在CMD下,影响美观)
      2.“color 1e”--设置默认的控制台前景和背景颜色。当前我设为蓝底黄字,具体颜色请在CMD下用“color /?”查询。
      --这里又提到了这个参数“/?”,一般CMD下命令后加“/?”就会显示这条命令的帮助。
      3.“rem”--注释作用,批处理执行过程中前不执行它,rem 后的字符只作注释作用。
      4.“title”--设置命令提示窗口的窗口标题。默认为“cmd”。改成自己喜欢的多有个性,嘿嘿。
      5.“cls”--不多说,清屏命令。主要是怕前面的一些空白或字符出现影响美观。
      6.“set”--这个命令的作用很大,请用“set /?”查询具体使用方法。本例“set topip=172.16.”是将一个名为“topip”的变量值设为“172.16.”。注意CMD下变量的设置不区别数字与字符,能够自动根据提供的值调整。下行“set theip=0.0”同理。
      7.“echo .”--在新行中显示一个“.”。echo命令能显示其后的comment。这里提几个有趣实用的用法--“echo.”,注意与前面的不同,“echo”与“.”间无空格。这条命令如同一个回车,在新行不显示任何信息并换行。“@echo”,实现响铃的提示音。后面一个字符的输入方法是在CMD下用“ctrl+G”,而这个字符得到的方法是CMD下用命令“echo "ctrl+G" >ex.txt”,存入ex.txt文件,再从那里提取出来的。嘿嘿,如果你懒得做,就copy我在上面提供的字符喽。
      8.“if”--这条命令也会经常用到,请用“if /?”学习更多信息。本例“if not exist scanipc.exe (echo 文件错误!……)”,实现功能:当同级目录下不存在“scanipc.exe”时,提示“文件错误!……”。否则不提示。“if not exist filename”在批处理中使用比较多些。
    9.“:top”,设置一个标志点,标志名为“top”。“:”的作用就是设置标志。网上有文章说“使用"::comment"作为注释比"rem comment"执行效率更高。”我相信,这里也建议大家,如果BAT中注释较多时,请使用“::comment”设置。
    10.“set /p pno=”--设置一个变量,并接受用户输入。BAT不需要预先声明变量,只在需要时设置。参数“/p”:将变量数值设成用户输入的一行输入。
    11.“if %pno% gtr 9 gotoonerrorspno”--检验用户输入值是否大于9,是,则转到一个指定标志点。这里注意BAT中变量引用时要在前后加“%”,但在if语句中可有可无,具体应用大家多写几遍就有体会。
      12.“goto label”--无条件跳转到指定标志位并向后执行。BAT好像只有这么一个跳转语句了,作用不用我说,用了就知道。
      注意不要构成死循环。
    小结:到此,完成了颜色设置、注释版权说明、标题设置、变量初始化、欢迎信息、功能界面初始化、标志点设置(因为欢迎信息只显示一次而功能界面要多次使用所以将标志点设置在欢迎信息的后面。)命令的接受与跳转。
    ;功能界面一般要用“tab”键调整相对位置,才能起到美观的效果。请多练习几遍领会。
      ;大家在写脚本过程中要注意标志点的设置位置,才能起到合适的效果。一般写过几个脚本会有些感受。
      ;接着接受用户输入后“cls”清屏开始执行指定功能。注意这个cls的作用。因为清屏可以在此时,也可以在每个命令执行之前,但如果在每个命令执行之前用的请,那么要写的cls就多了,于是把cls写在这里合适,方便节约快捷。大家在写脚本时也应当注意这方面的技巧,将使你写出更加高效节约方便的代码。在每次写完脚本后合理地整合一下自己的代码。能积累不少经验。
      ;另外,鉴于部分人仍不知道如何建立BAT文件与运行,请:打开记事本,写入代码,保存,保存类型为“所有文件*.*”,文件名为“name*.BAT”。保存后,双击运行。因为一般BAT运行很快,所以你可能只看到窗口一闪就消失了,那么你可以在exit之前加pause确保能看见运行结果。
      到此,你应该能够写一个很简单的脚本了,实现一些界面控制。
      例1:
      @echo off
      color ca
      title 这是我第一个BAT脚本。
      echo 这是我第一个BAT脚本。不错啊。
      pause >nul
    exit
    第二节:(提一些好用的命令)
      以下设置的都是功能段,在“goto step%pno%”跳转到相应功能段后,开始执行相应功能。
      一般命令段:
      step1:ping命令。(在echo中变量的引用请注意前后加“%”号,否则会导致程序出错。)
      我们常用的ping命令:其实很简单,自己看帮助啦。
      本句“ping %topip%%theip% -n 1 |findstr 100%>nul”将ping 只发送一次数据包,这样命令执行起来就快多了,但这样所会引起一定概率的误判,而我们在内网这种概率很低,低到可以忽略。所以本人使用参数“-n 1”减少执行时间。将结果不回显而通过管道命令“|”送给findstr分析,findstr查找是否存在“100%”,并将回显“丢弃”--“>nul”。因为如果ping一台主机如果返回的结果有“100%”存在说明“不在线。或者有防火墙阻挡。”。所以用findstr确定字符串“100%”的存在性,因为findstr也有回显,但我们并不需要,所以将它“丢弃”,使用参数“>nul”将指定命令回显丢弃。(这一句命令是重点,请仔细领会。)
      又因为findstr确定指定字符串的存在性后会设定环境变量“errorlevel”的值,所以我们根据“if %errorlevel% equ 0(command)”,判断findstr的执行结果就行了,也就不需要有回显。
      “errorlevel”作用很大,一般命令行下的命令执行后都有一个特别的errorlevel,我们就可以根据相应的“返回值”作出相应判断并执行相应功能。findstr如果找到指定字符串,则有errorlevel=0,说明:IP不在线。那么既然不在线,我们就没有向
      下执行的必要了,直接跳回top界面功能接受下一次指令。
      如果IP有不同回应,说明在线,则开始检测共享。“net view \\%topip%%theip%\”--查看指定IP的共享清单。net详细命令请自行查阅。
      列出共享清单后返回功能界面。
      step2:打开共享一。“explorer \\%topip%%theip%\”,用资源管理器打开指定的IP根。注意语法,其它也没有什么。
      step3:IPC$空连接。“net use \\%topip%%theip%\ipc$"" /user:"administrator"”,一个很老的漏洞,但也许内网还有机子存在哩,嘿嘿,语法就是这样。
    step4:一般信息。“ipconfig /all”--用于得到本机的IP与MAC等信息,很好用的命令。语法如示。“nbtstat -na %topip%%theip%”--用于得到他方机子的一些信息,语法如示。另请自查帮助。
    step5:Scanipc。用命令行打开了一个程序而已。在命令行下执行其它命令也就是这样啦。
      step6:返回时间。“net time \\%topip%%theip%”--探测指定机子时间,语法如示。
      step7:远程连接。“net use \\%topip%%theip%\admin$"" /user:"administrator"”,嘿嘿,administrator空密码连接。
      最简单的入侵啦,嘿嘿嘿。语法如示。
      step8:本机信息。跳到另一个功能界面执行相应功能。
      step9:高级命令。跳到另一个功能界面执行相应功能。
      step0:退出程序。一个exit退出脚本。“exit”,退出CMD。
      onerrorsip:实现错误提示,并重新执行step1。
      onerrorspno:实现错误提示,并重新跳转到功能界面。
      高级命令段:
      引用前面已给定的IP,并对其进行一些高级操作。重新绘制功能界面。
      首先,注意在一个BAT文件中,不允许出现有标志名的重复。
      step11:条件连接。设定两个变量,分别为用户名与密码。注意到有一个默认的功能。实现原理是,当接受到用户输入为空时
      (即一个回车),变量将保持不变。条件连接语法如示。比前面远程空密码连接更高级一点,嘿嘿。
      step12:打开共享。打开已经连接成功的对方计算机的指定盘。打开指定盘语法如示。
      step13:发送消息。向对方发送消息。要求双方的messager服务开启,否则无法发送成功。发送消息语法如示。
    step14:远程关机。设置关机时间与关机理由,用shutdown程序关闭对方计算机,嘿嘿,恶作剧。要求你连接成功,并有shutdown程序支持。shutdown语法自查帮助。
    step15:溢出CMD。嘿嘿,溢出到对方的CMD下,算是一个真正的入侵了。当然需要用户名与密码喽。要求用户名与密码正确并对方默认支持远程管理。并有psexec程序支持。psexec语法如示,并请自查帮助。
      step16:结束进程。嘿嘿,不说也知道,结束对方已知进程。要求连接成功并有pskill程序支持。恶作剧类,有恶意成分。嘿嘿。小心使用。
      step17:ipc$连接。同step3.
      step18:断开连接。断开与对方的连接,就是擦屁股啦,以免让对方有所察觉。这个好习惯要养成。语法如示。
      step19:一般命令。返回前面一个功能界面。
      step20:结束程序。退出。
      step110:AT命令,令对方在指定时间运行指定命令。有点像木马,嘿嘿。要求连接成功。因为节约变量,所以引用了前面的暂不使用的变量。好习惯。哈哈。
      step111:telnet。远程telnet。不要说你一点都不知道,语法如示并请自查帮助。
      step112:更改主IP。主要是为了使我们的使用方便,对某个特定IP段探测能够简化输入。如主IP改成“172.16.130.”,那么专门对130探测,而且输入IP时只需输入最后位,嘿嘿,多方便啊。
      step113:任意命令。主要是接受用户输入并执行用户的输入罢了,结构如示。
      本机信息段:主要是对本机信息的一些查询语法。
      stepm1:ipconfig,不说了。
      但请注意到,在功能界面的实现上有一点,“&”符号,因为“&”符号在CMD下是命令连接符,如果光用“&”会让BAT误解为其后的都是命令。但我们只是希望输出一个“&”罢了,于是用“^”符号连接符表明只是输出“&”,而不是实现命令连接。
      这里提一下“&”命令连接符,
      例如:echo frist&echo second.同效于:echo frist  echo second.
      只是实现结合两行命令在同一行实现。类如一个很简单的批处理啦。
      再提一下“^”符号连接符,对一些特殊符号可能在CMD下无法正确如愿显示,可用“^”连接,以达到如期效果。
      用了“^”在文本中占了一位空间,但在输出时它并不显示,所以注意界面的布置。
      stepm2:本机进程。利用命令行下的进程工具查看进程。要求pslist程序支持。
      stepm3:本机用户。就是查询一下本机用户,也许会发现机了被动过的痕迹。
      stepm4:结束进程。在命令行下结束本机进程。要求有pskill程序支持。
      stepm5:本机端口。也许能看出被攻击或被入侵的痕迹。语法如示。
      stepm6:共享情况。看看本机的共享是否真的如你所想,如你所见。否则请注意安全喽。语法如示。
      stepm7:启动项值。在命令行下导出启动项值并给出结果。比魔法兔子什么的快多了,就是界面不是很好看,呵呵。语法如示。
      stepm0:退出程序。退出。
      小结:到此,您学习过了一些有用的命令与应用。以及大部分的网络命令与外部程序的使用。接下来你可以模拟IP小工具写出适合更自己的IP小工具哦。注意每执行完一项功能后要用goto返回功能界面,否则脚本无条件向下继续执行。
      ;errorlevel的应用。在BAT中,errorlevel的作用很大,大家在使用过程中通过多次接触,感受一下如何玩转errorlevel。在执行完一个程序后,可以用echo %errorlevel%查看程序运行后是如何设定errorlevel的值。
      ;if的应用。在BAT中,if语句的作用也很大,特别与errorlevel结合实现自动判断。以及一些基本条件判断。请查看"if /?"学习更详细的说明。
      ;变量的接受与传递。这方面的感觉需要大家多写BAT才能有所感触。如何合理与高效的应用变量,能使你的脚本更加漂亮。
    计算机语言都是实践性很强的,我们学习理论只是基础,通过大量的实践才能真正掌握一门语言的应用。
    第三节:(一些应用技巧与命令)
      接下来我们看我的“代理服务器搜索组件 (ver 2.1)”,
      1.“>”与“>>”的区别。
      “>”--把指定数据传送到指定文件或区域。有覆盖作用,从文件头开始重写文件。如指定文件不存在,则新建文件并存入指定数据。
      “>>”--以追加方式将指定数据传送到指定文件或区域。从文件结尾开始写入指定内容。
      这两个功能有区别,请注意选择合适的传送方式传送数据。
      例如:“echo 文本内容。>link.txt”与“echo 文本内容。>>link.txt”。若本不存在文件link.txt或文件link.txt内容为空,那么两条命令的运行结果相同。但如果link.txt不为空,那么第一条命令将清除link.txt所有内容并存入数据“文本内容。”保存。而第二条命令只在link.txt的文件尾(另起一行,注意每一个“>>”都会另起一行写入新数据)追加数据“文本内容。”而以前的内容保持不变。
      还要特别提一个前面说过的“丢弃”用法“>nul”,因为我们有时候只需要命令的运行而并不需要看到命令的运行结果以及回显,但这些命令又会出现我们并不需要看到的回显,影响美观。故在其后追加“>nul”,丢弃回显。
      2.循环语句的说明。
      例2:
      :puship
      set /p tip=
      if %tip%==%tbip% goto step1 
      set tbip=%tip%echo %tip% >>link.txt
      goto puship
      本例中“if %tip%==%tbip% goto step1”与“if %tip% equ %tbip% goto step1”效果一样。
      本例的作用是接受用户帖入数据。关键技术在于:因为用户帖入数据我们不能使用户每次输入都询问是否结束,而需要实现“智能化”的判断,但如何以最少的代码、最简单的方法实现所谓的“智能化”呢。分析用户输入情况:因为一般用户帖入数据都不会出现重复,所以我们利用这个特点,分析用户的数据,当用户帖入列表时,分析数据并将数据存入相应文本,以备后用。当用户粘帖文本结束后,再加一个回车,因为最后一次变量没有接受到任何修改,于是保持默认不变(也就是之前的数据。),再通过我们之前的数据备份对照,分析是否不变,是,则跳出循环。这样,我们通过两个变量以一个IF比较实现相对简单的“智能化”。嘿嘿,这一点代码想了我一个小时。这么说不知道大家是否能理解。请仔细参透例2的技术要点。
      3.“FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt) do (set /a Allip=Allip+1>nul)”
      这句FOR语句是复杂的杂合语句。首先请用for /?查阅详细用法,这里不再复述。
      但是特别要提一点的就是批处理与直接命令行下的CMD的区别在FOR语句上。批处理时,变量引用需要有两个“%”号,否则无法正确执行,而CMD下不用,只需一个“%”。
      “set /a Allip=Allip+1>nul”--实现算术运算,变量Allip的自增,注意大小写。把回显“丢弃”。
      本例实现对文件link.txt内容计数,忽略以“;”开头的行。这就是为什么我们在前面要用“echo ;:文本>link.txt”来创建文本的意义所在。4.“call toping %%i”--从批处理程序调用另一个批处理程序。调用另一个批处理“toping.bat”(因为BAT可以直接运行所以不需要后缀BAT),并有参数传递。参数来自于FOR语句的提取。“FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt)
      ”--从link.txt的每行中提取文本,从每行的开头第一个字符开始(tokens=1),以“:”界定提取结尾(delims=: )。把提取结果赋给变量i。
      5.“type”--在命令行下显示指定文件的内容。相信大家应该很熟悉,不多说了。注意与“>或>>”的结合使用,或与其它操作符的结合使用。
      6.“%1”--在CMD下,一个BAT能够接受同时9位的参数,“%1~%9”,分别对应给定的参数变量。“%0”,即是文件本身。我们在使用BAT的过程中会经常遇到两个或两个以上脚本间需要参数传递。那么请好好掌握这个用法,多说无益,需要大家在实践中积累经验。
      7.再说一些比较边缘,但大家比较兴趣的命令。呵呵,不要做坏事。
      net user admin 123 /add
      net localgroup administrators admin /add
      net localgroup users admin /del
      net user admin /active:yes
      net user
      net user admin
      net user admin /del
      “net user admin 123 /add”--添加名为“admin”,密码为“123”的用户,如果“123”不写,则默认密码为空。
      “net localgroup administrators admin /add”--将用户“admin”加入“administrators”组,嘿嘿,高权限。
      “net localgroup users admin /del”--将“admin”从“users”组删除。呵呵,因为用户新加进去时都是“users”组,权限比较低,所以要从这个组跳出来,保证administrators组的权限正式发挥作用,如果不这么做,对方系统会默认你的最低权限。
      “net user admin /active:yes”--怕没法使用没有启动,不要紧,激活这个帐号,嘿嘿。
      “net user”--看看用户有多少哦。“net user admin”--看看刚刚加的用户信息如何,是否如我所想,如我所愿呢。
    “net user admin /del”--删除用户admin。

    展开全文
  • 如何编写bat文件来执行jar程序
                           

    将Java程序打包成jar文件后,可以直接运行的,我们可以双击运行,也可以通过命令行调用。
    这里写图片描述
    当然前提是你的电脑要配置好Java环境。

    如果某些程序需要定期执行,那我们可以编写bat文件来执行相关java程序。(Linux中应该是写shell文件,这个我们以后再讨论)

    很多同学可能不太了解如何编写bat文件,不用担心,我们可以从最基础的开始。

    @echo offjava -jar -Xms4000m -Xmx4000m -Xmn2000m test.jar@pause
      
    • 1
    • 2
    • 3
    • 4
    • 5

    新建一个bat文件,将上面代码复制进去就可以了,保存后双击运行bat文件,就可以执行test.jar程序了。这里加了一些参数是用来初始化内存,在JAVA_OPTS Java虚拟机参数说明中我已经做了详细说明,这里就不废话了。

    @pause会让弹出的命令行窗口暂停,提示“请按任意键继续…”,如果不需要暂停的话,可以删掉。尤其做成定时任务的时候,如果你不删掉,一直等待,会影响第二次运行。

    如果需要输出日志,如下所示:

    @echo offjava -jar -Xms8000m -Xmx8000m -Xmn4000m test.jar > log\batchLog%date:~0,4%%date:~5,2%%date:~8,2%.log
      
    • 1
    • 2
    • 3

    运行后会生成log\batchLog20161010.log这个日志文件,在日子文件的名称中增加了时间,可以每天生成不同日志文件,便于管理。

    注意点:
    日志文件会在执行命令的时候生成,但是日志文件夹不会自动生成,比如上面得log文件夹,这个文件夹用于存放日志文件,如果没有事先建好,会报找不到路径的错误,导致命令执行错误。

    如果你的电脑没有配置java环境,这样执行会报错的,因为找不到jdk的类库,所以为了简单点,我们还是先把java环境配置好吧。

    当执行失败的时候,可以将@echo off去掉,这样命令窗口就会
    打印失败信息,有助我们判断问题原因。

    感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • bat文件编写学习笔记

    千次阅读 2007-12-25 13:50:00
    喵喵最近在做一个小东西,自动化持续集成,虽然他的理念还是蛮有说头的,但是说到底我所做的,主要就是学习ant和cruisecontrol的使用,非要算的话再加上junit和selenium,另外,可能就是这里要说的bat文件编写了。...

    大家应该也看出来了,喵喵最近在做一个小东西,自动化持续集成,虽然他的理念还是蛮有说头的,但是说到底我所做的,主要就是学习ant和cruisecontrol的使用,非要算的话再加上junit和selenium,另外,可能就是这里要说的bat文件的编写了。

    喵喵要写的bat文件很简单,一般就是把command中的命令直接放到*.bat中就可以了。即便这样,还是遇到了一个问题:喵喵写了一个ant.bat,内容是ant -f filename -l log.txt,但是把ant -f filename -l log.txt放到command中运行自如,而一旦运行bat,就不停的输出ant -f filename -l log.txt。

    这是怎么回事呢?怎么都不明白,然后mentor和leader都被我喊了过来,活活一时都没有看出什么来。然后喵喵就只能很郁闷的吃完一个半小时才送到的外卖回家。

    之后是一个周末,想了一个晚上加一个白天,终于在周六晚上茅塞顿开:bat文件不用输入*.bat才能运行的,输入*就行了,所以——ant -f filename -l log.txt直接就调用了当前目录下的ant.bat文件,而不会去查找环境变量中ANT_HOME的设置,自然就循环输出了。。。

    解决方法很简单:把文件名改了,或者指定ant安装的全路径就行了。好吧,喵喵是猪……

    出了这种诡异问题(当然,是喵喵的错),怎么说也要好好看一下bat文件的编写,做点笔记吧。n_n下面的内容应该算是喵喵转载+整理的~~

    ----------------------------------------------------我是华丽的分隔线--------------------------------------------------------

    批处理的简介

    扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 (这不就是Linux下面的shell文件么……)

    首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

    其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命 令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。

    第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS 搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:/BATCH),然后将所有你 编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。

    第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是 自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存, 设置系统环境变量等。

    下面是一个运行于Windows 98下的autoexec.bat的示例:
    @ECHO OFF
    PATH C:/WINDOWS;C:/WINDOWS/COMMAND;C:/UCDOS;C:/DOSTools;C:/SYSTOOLS;C:/WINTOOLS;C:/BATCH
    LH SMARTDRV.EXE /X
    LH DOSKEY.COM /Insert
    LH CTMOUSE.EXE
    SET TEMP=D:/TEMP
    SET TMP=D:/TEMP

    批处理的作用

    简单的说,批处理的作用就是自动的连续执行多条命令。 

    这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(>前面内容表示DOS提示符): 
    C:/>cd wps 
    C:/WPS>spdos
    C:/WPS>py 
    C:/WPS>wbx 
    C:/WPS>wps 

    如果每次用WPS之前都这样执行一遍,您是不是觉得很麻烦呢?

    好了,用批处理,就可以实现将这些麻烦的操作简单化,首先我们编写一个runwps.bat批处理文件,内容如下:
    @echo off
    c:
    cd/wps
    spdos
    py
    wbx
    wps
    cd

    以后,我们每次进入wps,只需要运行runwps这个批处理文件即可。

    常用命令

    echo,@,call,pause,rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

    1、Echo 命令 

    打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 

    语法 :
    echo [{on off}] [message] 
    Sample:@echo off / echo hello world 

    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。

    2、@ 命令  

    @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

    Sample:
    @echo off
    @echo Now initializing the program,please wait a minite... 
    @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 

    3、Call 命令 

    从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。

    语法 
    call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 
    参数 
    [Drive:}[Path] FileName 
    指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 

    4、Pause 命令 

    运行 Pause 命令时,将显示下面的消息: 
    Press any key to continue . . . 

    Sample: 
    @echo off 
    :begin 
    copy a:*.* d:/back 
    echo Please put a new disk into driver A 
    pause 
    goto begin 
    在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:/back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。 

    5、Rem 命令

    注释命令,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。

    语法: 
    Rem Message 

    Sample:@Rem Here is the description. 

    6、start 命令 

    调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。

    入侵常用参数: 
    MIN 开始时窗口最小化 
    SEPARATE 在分开的空间内开始 16 位 Windows 程序 
    HIGH 在 HIGH 优先级类别开始应用程序 
    REALTIME 在 REALTIME 优先级类别开始应用程序 
    WAIT 启动应用程序并等候它结束 
    parameters 这些为传送到命令/程序的参数

    注意:执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 

    批处理文件的参数

    批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。 

    %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 

    例1:C:根目录下有一批处理文件名为f.bat,内容为:
    @echo off
    format %1
    如果执行C:/>f a:
    那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

    例2:C:根目录下一批处理文件名为t.bat,内容为:
    @echo off
    type %1 
    type %2 
    那么运行C:/>t a.txt b.txt 
    %1 : 表示a.txt
    %2 : 表示b.txt
    于是上面的命令将顺序地显示a.txt和b.txt文件的内容。

    特殊命令

    if,goto,choice,for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

    一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 

    1、if [not] "参数" == "字符串" 待执行的命令 
    参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
    例:if "%1"=="a" format a:

    2、if [not] exist [路径/]文件名 待执行的命令 
    如果有指定的文件,则条件成立,运行命令,否则运行下一句。
    如: if exist c:/config.sys type c:/config.sys 
    表示如果存在c:/config.sys文件,则显示它的内容。

    3、if errorlevel <数字> 待执行的命令 
    很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过 if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定 的数字,则条件成立,运行命令,否则运行下一句。
    如if errorlevel 2 goto x2

    二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 

    如:
    goto end 
    :end 
    echo this is the end 

    标号用“:字符串”来定义,标号所在行不被执行。 

    三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。

    注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。

    choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):
    CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

    描述:
    该工具允许用户从选择列表选择一个项目并返回所选项目的索引。

    参数列表:
    /C     choices       指定要创建的选项列表。默认列表是 "YN"。
    /N                          在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。
    /CS                       允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。
    /T     timeout        做出默认选择之前,暂停的秒数。可接受的值是从0到 9999。
                                  如果指定了 0,就不会有暂停,默认选项会得到选择。
    /D     choice         在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中;
                                  同时,必须用 /T 指定 nnnn。
    /M     text               指定提示之前要显示的消息。如果没有指定,工具只显示提示。
    /?                          显示帮助消息。

    注意:
    ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0的ERRORLEVEL值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。

    示例:
    CHOICE /? 
    CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
    CHOICE /T 10 /C ync /CS /D y
    CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
    CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

    如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
    屏幕上会显示:
    确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?

    例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): 
    @echo off 
    choice /C dme /M "defrag,mem,end"
    if errorlevel 3 goto end
    if errorlevel 2 goto mem 
    if errotlevel 1 goto defrag 
    :defrag 
    c:/dos/defrag 
    goto end 
    :mem 
    mem 
    goto end 
    :end 
    echo good bye

    此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择 d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的 程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。

    四、for 循环命令,只要条件符合,它将多次执行同一命令。 

    语法:
    对一组文件中的每一个文件执行某个特定命令。
    FOR %%variable IN (set) DO command [command-parameters]

    %%variable                           指定一个单一字母可替换的参数。
    (set)                                        指定一个或一组文件。可以使用通配符。
    command                              指定对每个文件执行的命令。
    command-parameters       为特定命令指定参数或命令行开关。

    例如,一个批处理文件中有一行:
    for %%c in (*.bat *.txt) do type %%c 
    则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。

    批处理示例 
    1. IF-EXIST

    1)首先用记事本在C:/建立一个test1.bat批处理文件,文件内容如下: 
    @echo off 
    IF EXIST /AUTOEXEC.BAT TYPE /AUTOEXEC.BAT 
    IF NOT EXIST /AUTOEXEC.BAT ECHO /AUTOEXEC.BAT does not exist 
    然后运行它:
    C:/>TEST1.BAT 
    如果C:/存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。

    2)接着再建立一个test2.bat文件,内容如下: 
    @ECHO OFF 
    IF EXIST /%1 TYPE /%1 
    IF NOT EXIST /%1 ECHO /%1 does not exist 
    执行: 
    C:/>TEST2 AUTOEXEC.BAT 
    该命令运行结果同上。
    说明: 
    (1) IF EXIST 是用来测试文件是否存在的,格式为 
    IF EXIST [路径+文件名] 命令 
    (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 

    3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: 
    @echo off
    IF "%1" == "A" ECHO XIAO 
    IF "%2" == "B" ECHO TIAN 
    IF "%3" == "C" ECHO YIN 
    如果运行:
    C:/>TEST3 A B C 
    屏幕上会显示:
    XIAO
    TIAN
    YIN
    如果运行:
    C:/>TEST3 A B 
    屏幕上会显示
    XIAO
    TIAN 
    在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。 

    2、IF-ERRORLEVEL

    建立TEST4.BAT,内容如下:
    @ECHO OFF
    XCOPY C:/AUTOEXEC.BAT D:
    IF ERRORLEVEL 1 ECHO 文件拷贝失败
    IF ERRORLEVEL 0 ECHO 成功拷贝文件

    然后执行文件:
    C:/>TEST4
    如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 

    IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

    因此下面的批处理文件是错误的:
    @ECHO OFF 
    XCOPY C:/AUTOEXEC.BAT D:/ 
    IF ERRORLEVEL 0 ECHO 成功拷贝文件 
    IF ERRORLEVEL 1 ECHO 未找到拷贝文件 
    IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 
    IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 
    IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 
    无论拷贝是否成功,后面的: 
    未找到拷贝文件 
    用户通过ctrl-c中止拷贝操作 
    预置错误阻止文件拷贝操作 
    拷贝过程中写盘错误
    都将显示出来。 

    以下就是几个常用命令的返回值及其代表的意义: 

    backup 
    0 备份成功 
    1 未找到备份文件 
    2 文件共享冲突阻止备份完成 
    3 用户用ctrl-c中止备份 
    4 由于致命的错误使备份操作中止 

    diskcomp 
    0 盘比较相同 
    1 盘比较不同 
    2 用户通过ctrl-c中止比较操作 
    3 由于致命的错误使比较操作中止 
    4 预置错误中止比较 

    diskcopy 
    0 盘拷贝操作成功 
    1 非致命盘读/写错 
    2 用户通过ctrl-c结束拷贝操作 
    3 因致命的处理错误使盘拷贝中止 
    4 预置错误阻止拷贝操作 

    format 
    0 格式化成功 
    3 用户通过ctrl-c中止格式化处理 
    4 因致命的处理错误使格式化中止 
    5 在提示“proceed with format(y/n)?”下用户键入n结束 

    xcopy 
    0 成功拷贝文件 
    1 未找到拷贝文件 
    2 用户通过ctrl-c中止拷贝操作 
    4 预置错误阻止文件拷贝操作 
    5 拷贝过程中写盘错误 

    3、IF STRING1 == STRING2

    建立TEST5.BAT,文件内容如下: 
    @echo off 
    IF "%1" == "A" FORMAT A: 
    执行: 
    C:/>TEST5 A 
    屏幕上就出现是否将A:盘格式化的内容。 
    注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。
    如:if [%1]==[A] 或者 if %1*==A*

    4、GOTO

    建立TEST6.BAT,文件内容如下: 
    @ECHO OFF 
    IF EXIST C:/AUTOEXEC.BAT GOTO _COPY 
    GOTO _DONE
    :_COPY 
    COPY C:/AUTOEXEC.BAT D:/ 
    :_DONE 

    注意: 
    (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 
    (2) 标号的命名规则与文件名的命名规则相同。
    (3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。

    5、FOR

    建立C:/TEST7.BAT,文件内容如下: 
    @ECHO OFF 
    FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C 
    运行: 
    C:>TEST7
    执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。

    展开全文
  • 简单.bat文件编写

    千次阅读 2010-10-10 22:20:00
    不要看他简单,一些简单的病毒就是用这种批处理来实现的 当我们得到一个批处理文件的时候用记事本打开里面的代码,看上去有些简单,而且很容易懂,不过我还是想说一下,当作灌水吧. 我们来看看命令表...
  • .bat文件编写和运行

    2016-03-14 10:27:06
    .bat文件是直接在dos界面运行的批处理文件。... 命令编写方式如下: 1. 新建一个记事本文件; 2. 在记事本文件中写所要执行的命令,然后...4. 打开.bat文件即可执行。 如果想查看.ba文件,就将.bat后缀改为.txt。
  • CSS布局HTML小编今天和大家分享一BAT脚本运行某指定路径程序执行的程序路径及参数如下: C:\Program Files\McAfee\Common Framework是0001001011001010,余3循环码得到的方法。 1.前100以X5作为BCD代码转换指令的...
  • 打开文件或文件夹可以用start命令,start命令会根据文件关联的程序自动调用关联的程序打开文件和文件夹. 可以用记事本写如下命令,之后改扩展名为.bat即可 打开文件夹 start "" "c:\windows" 或start explorer "c:\...
  • 编写bat脚本启动exe程序

    千次阅读 2021-01-28 18:00:58
    编写bat脚本启动exe程序 此处以本机上安装的EpicGamesLauncher.exe程序为例。 编写bat脚本 大致过程就是:进入exe所在路径、运行即可 @echo off F: cd F:\EpicGames\Epic Games\Launcher\Portal\Binaries\Win32 ...
  • 编写bat文件

    千次阅读 2006-03-16 14:33:00
    突然想起了bat文件编写于是就去网络上早了一下不是很多内容耶看来Bat不是很热门了现在--space.sf4u.net>>>>>前言最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕...
  • bat 文件语法 和技巧(bat 文件的编 写及使用)内容简介:首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样), 你可以使用DOS下的Edit...
  • BAT文件运行EXE程序

    2013-01-06 15:38:00
    start "" "D:\Program Files\Tencent\QQ.exe" start D:\CrossFire\CrossFire.exe ...每个需要启动的程序写一行,就可以同时启动多个程序 如果需要让一个exe运行完之后再运行下一个,则 sta...
  • 教你如何编写自己的bat文件

    千次阅读 2012-09-26 08:54:27
    教你如何编写自己的bat文件!(附几个好用的bat文件) 先举个简单的例子: 让电脑每天在指定时间关机,可以用下面方法 打开记事本,写入以下内容: at 22:59 shutdown -s -f -t 3 保存为shutdown.bat文件,双击...
  • Windows编写bat执行文件

    2020-04-17 10:34:47
    1:建立TXT文件 1 2 3 4 ... Rem nping用来测试IP地址的连通性 ... Rem nping--tcp -p 80 --flags ... 2:重命名为bat文件 3:建立自动化执行任务。 详细的bat编写帮助如下: 有关某个命令的详...
  • Windows下编写.bat文件一键启动nginx+php

    千次阅读 2017-11-14 18:57:14
    点击快捷方式还算比较方便,但我们更可以通过自己编写的.bat文件一键启动。...BAT文件语法和技巧(bat文件编写及使用) 基础文件有三个,其实也可以写在一个.bat文件里面,但是便于理解就分开写不同的
  • windows bat脚本编写

    万次阅读 多人点赞 2018-08-03 17:55:31
     开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。...
  • 当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.   批处理文件中的命令是什么?  批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再...
  • 主要有添加外部参数获取,测试,编写通用脚本,安装包制作四个步骤,完成一个双击项目专属文件就可以自动打开程序的功能。 1.添加外部参数获取 创建一个简单的Pyqt的文件编辑器项目,不再讲述。 myapp = ...
  • CMD命令和BAT命令编写中文教程,CMD命令和BAT命令编写中文教程
  • W10打开bat文件一闪就没了

    千次阅读 2020-12-21 15:00:58
    W10打开bat文件一闪就没 通常bat文件默认是出现故障或者正常运行时都会自动关闭运行时窗口,当然,一闪而过很显然属于异常情况,所以我们只需要想办法查看错误,针对错误解决即可。 1.使用Notepad++编辑bat文件,在...
  • BAT脚本编写教程

    千次阅读 2016-09-22 13:23:42
    BAT脚本编写教程   echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。  echo 表示显示此命令后的字符  echo off 表示在此语句后所有...
  • 程序中调用bat文件

    千次阅读 2014-07-14 16:07:14
     在Microsoft Visual C++环境下编写c++程序可以包含头文件 然后在main函数体中调用system()函数,可以调用dos命令。  例如:想要程序在某个地方停住使用system("PAUSE");就可以暂停;  system("CLS");可以...
  • (1)选中要打包的Java项目,点击菜单File-export-JARFile (2)点击“Next“,按照需求选择所要打包的内容及格式,点击“Browse”选择jar包所在的目录…点击”Next”...我将刚才打包的jar文件放在D盘,
  • bat文件(cmd命令批处理)的编写使用

    万次阅读 多人点赞 2017-05-18 16:40:45
    首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大...其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循
  • 编写bat批处理文件快捷启动Burpsuite

    千次阅读 2020-07-21 20:49:06
    文章目录路径结构编写bat 路径结构 激活码 批处理启动文件 程序 中文补丁 图标 编写bat !!根据自身情况更改!! 中文补丁可选 在Burpsuite路径下编写以下代码: start javaw -Dfile.encoding=utf-8 -java...
  • windows bat 批处理脚本编写指南

    千次阅读 2020-02-01 20:20:45
    本文由浅入深,比较系统地讲解了windows bat 批处理脚本编写指南,包括:windows bat批处理脚本概述,变量使用, 程序返回码及errorlevel使用,stdin、stdout、stderr,if判断与&、&&、||, for循环使用,函数goto...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,758
精华内容 9,903
关键字:

bat文件编写打开程序