Bat命令学习

来源:互联网 发布:淘宝店铺装修背景图 编辑:程序博客网 时间:2024/06/05 14:08

注:平常整理总结,需要最新的文档笔记可以@我

1.Echo 命令

  语法: echo [{on|off}] [message]
  eg:
  a. echo off结果:在cmd命令窗口中不再显示前面的 "C:\Users\army_du#163.com>"提示信息
  b. echo hello world结果:输出hello world到cmd窗口
  c.   echo hello world > F:\a.txt 结果:输出hello world到F:\a.txt

  d.   echo hello world >> F:\a.txt 结果:追加hello world到F:\a.txt

 e.   echo %cd%  输出当前路径

   

2.@ 命令

表示不显示@后面的命令,(在入侵过程中自然不能让对方看到你使用的命令啦)
  @ 与 echo off 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。
  eg:
    Sample: @echo off  (此语句常用于开头,表示不显示所有的命令行信息,包括此句)
  Sample: @echo please wait a minite...
  Sample: @format X: /q/u/autoset
 

3.Goto 命令

语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
  指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。
  label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。
  goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。
  

4.Rem 命令

  语法:Rem Message...
  (小技巧:用::代替rem)
  注释命令,在C语言中相当与/*...*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和自己日后修改。
  

5.Pause 命令

  会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
  

6.Call 命令

  语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
  参数: [Drive:][Path] FileName  指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
  调用另一个批处理程序,并且不终止父批处理程序。
  如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
  call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
  

7.start 命令

  调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。
  入侵常用参数:
        MIN 开始时窗口最小化
        SEPARATE 在分开的空间内开始 16 位 Windows 程序
        HIGH 在 HIGH 优先级类别开始应用程序
        REALTIME 在 REALTIME 优先级类别开始应用程序
        WAIT 启动应用程序并等候它结束
        parameters 这些为传送到命令/程序的参数
        

8.If 命令

  if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
  1) IF
     语法: if [not] "参数" == "字符串" 待执行的命令
     参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
2) if exist
     语法: if [not] exist [路径\]文件名 待执行的命令

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

  3) if errorlevel number
     语法: if [not] errorlevel <数字> 待执行的命令
     如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列)
  4) else
     语法: if 条件 (成立时执行的命令) else (不成立时执行的命令)
     如果是多个条件,建议适当使用括号把各条件包起来,以免出错。
  5) 比较运算符:
     EQU - 等于   (一般使用“==”)
     NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
     LSS - 小于
     LEQ - 小于或等于
     GTR - 大于
     GEQ - 大于或等于
     

9.choice 命令

  choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的 errorlevel,
  然后配合 if errorlevel 选择运行不同的命令。
        注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。
  choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。
  使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
  

10.for 命令

   for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。
   1) for {%variable | %%variable} in (set) do command [command-parameters]
      %variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I
      在批处理文件中使用 FOR 命令时,指定变量建议用 %%variable而不要用 %variable。
      (set) 指定一个或一组文件。可以使用通配符。
      command 指定对每个文件执行的命令。
      command-parameters 为特定命令指定参数或命令行开关。
   2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持:
      a.FOR /D %variable IN (set) DO command [command-parameters]
        如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。
      b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
        检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。
        如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
      c.FOR /L %variable IN (start,step,end) DO command [command-parameters]
        该集表示以增量形式从开始到结束的一个数字序列。
        如:(1,1,5) 将产生序列 1 2 3 4 5;  而(5,-1,1) 将产生序列 (5 4 3 2 1)。
      d.有或者没有 usebackq 选项:
        FOR /F ["options"] %variable IN (file-set) DO command
        FOR /F ["options"] %variable IN ("string") DO command
        FOR /F ["options"] %variable IN (command)  DO command
    参数"options"为:
        eol=c           - 指一个行注释字符的结尾(就一个,如“;”)
        skip=n          - 指在文件开始时忽略的行数。
        delims=xxx      - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
        tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。
                          m-n格式为一个范围。通过 nth 符号指定 mth。
              如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
        usebackq        - 指定新语法已在下类情况中使用:
                          在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
   3) Sample:
      1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。
         for %%c in (*.bat *.txt) do (echo %%c)
      a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。
         for /D %%a in (*e* *i*) do echo %%a
      b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。
         for /R E:\test %%b in (*.txt *.bat) do echo %%b
         for /r %%c in (*) do (echo %%c)  :: 遍历当前目录下所有文件
      c. 如下命令行将产生序列 1 2 3 4 5
         for /L %%c in (1,1,5) do echo %%c
      d. 以下两句,显示当前的年月日和时间
         For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日
         For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j时%%k分
      e. 把记事本中的内容每一行前面去掉8个字符
         setlocal enabledelayedexpansion
         for /f %%i in (zhidian.txt) do (
  set atmp=%%i
  set atmp=!atmp:~8!
           if {!atmp!}=={} ( echo.) else echo !atmp!
         )
         :: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符)
         for /f "delims=" %%a in (zhidian.txt) do echo.%%a
   4) continue 和 break
      利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单
      continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可
      break: 在 for 循环的外面的下一句写上一个标签,跳转到这位置即可
      Sample: (伪代码)
        for /F ["options"] %variable IN (command)  DO (
        ... do command ...
        if ... goto continue
        if ... goto break
        ... do command ...
        :continue
        )

        :break

11.set 命令

显示、设置或删除 cmd.exe 环境变量。
SET [variable=[string]]
  variable  指定环境变量名。

  string    指定要指派给变量的一系列字符串。

例如:set "CURRENT_DIR=%cd%"

CURRENT_DIR变量设置为当前路径

要显示当前环境变量,键入不带参数的 SET。
如果命令扩展被启用,SET 会如下改变:
可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
SET 命令已使用的名称的所有变量的值。例如:
    SET P
会显示所有以字母 P 打头的变量
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL
设置成 1。
SET 命令不允许变量名含有等号。
0 0
原创粉丝点击