批处理命令--管道&条件判断

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find "7626"


C:\Users\Administrator.ZHANGHAO-PC>netstat


活动连接


  协议  本地地址          外部地址        状态
  TCP    127.0.0.1:5357         ZHANGHAO-PC:60854      TIME_WAIT
  TCP    127.0.0.1:5357         ZHANGHAO-PC:60855      TIME_WAIT
  TCP    127.0.0.1:5357         ZHANGHAO-PC:60927      TIME_WAIT
  TCP    127.0.0.1:60855        ZHANGHAO-PC:wsd        TIME_WAIT
  TCP    192.168.0.102:54105    119.188.139.198:http   CLOSE_WAIT
  TCP    192.168.0.102:54111    ec2-54-223-201-33:http  CLOSE_WAIT
  TCP    192.168.0.102:60841    61.135.186.152:http    TIME_WAIT
  TCP    192.168.0.102:60842    123.125.112.68:http    TIME_WAIT
  TCP    192.168.0.102:60844    61.135.186.152:http    TIME_WAIT

C:\Users\Administrator.ZHANGHAO-PC>
C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find "7626" && echo 已被冰河
感染 || echo 未被冰河感染
未被冰河感染


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find "5357" && echo 已被冰河
感染 || echo 未被冰河感染
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING
  TCP    127.0.0.1:5357         127.0.0.1:54734        TIME_WAIT
  TCP    127.0.0.1:5357         127.0.0.1:54750        TIME_WAIT
  TCP    [::]:5357              [::]:0                 LISTENING
已被冰河感染


C:\Users\Administrator.ZHANGHAO-PC>find /*?
FIND: 无效的开关


C:\Users\Administrator.ZHANGHAO-PC>find /?
在文件中搜索字符串。


FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]


  /V         显示所有未包含指定字符串的行。
  /C         仅显示包含字符串的行数。
  /N         显示行号。
  /I         搜索字符串时忽略大小写。
  /OFF[LINE] 不要跳过具有脱机属性集的文件。
  "string" 指定要搜索的文本字符串。
  [drive:][path]filename
             指定要搜索的文件。


如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find /C "5357" && echo 已被冰
河感染 || echo 未被冰河感染
4
已被冰河感染


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find /C "5356" && echo 已被冰
河感染 || echo 未被冰河感染
0
未被冰河感染


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find /C "5356"
0


C:\Users\Administrator.ZHANGHAO-PC>netstat /a /n | find /C "5357"
4


C:\Users\Administrator.ZHANGHAO-PC>if /?
执行批处理程序中的条件处理。


IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command


  NOT               指定只有条件为 false 的情况下,Windows 才
                    应该执行该命令。


  ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
                    指定数字的退出代码,指定条件为 true。


  string1==string2  如果指定的文字字符串匹配,指定条件为 true。


  EXIST filename    如果指定的文件名存在,指定条件为 true。


  command           如果符合条件,指定要执行的命令。如果指定的
                    条件为 FALSE,命令后可跟 ELSE 命令,该命令将
                    在 ELSE 关键字之后执行该命令。


ELSE 子句必须出现在同一行上的 IF 之后。例如:


    IF EXIST filename. (
        del filename.
    ) ELSE (
        echo filename. missing.
    )


由于 del 命令需要用新的一行终止,因此以下子句不会有效:


IF EXIST filename. del filename. ELSE echo filename. missing


由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也
不会有效:


    IF EXIST filename. del filename.
    ELSE echo filename. missing


如果都放在同一行上,以下子句有效:


    IF EXIST filename. (del filename.) ELSE echo filename. missing


如果命令扩展被启用,IF 会如下改变:


    IF [/I] string1 compare-op string2 command
    IF CMDEXTVERSION number command
    IF DEFINED variable command


其中, compare-op 可以是:


    EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于


而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
/I 开关可以用于 IF 的 string1==string2 的形式上。这些
比较都是通用的;原因是,如果 string1 和 string2 都是
由数字组成的,字符串会被转换成数字,进行数字比较。


CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它
是在跟与命令扩展有关联的内部版本号比较。第一个版本
是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。
命令扩展被停用时,CMDEXTVERSION 条件不是真的。


如果已定义环境变量,DEFINED 条件的作用跟 EXIST 的一样,
除了它取得一个环境变量,返回的结果是 true。


如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%
会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到
其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:


    goto answer%ERRORLEVEL%
    :answer0
    echo Program had return code 0
    :answer1
    echo Program had return code 1


您也可以使用以上的数字比较:


    IF %ERRORLEVEL% LEQ 1 goto okay


如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%
将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始
命令行;否则,您会得到其数值。


如果没有名为 CMDEXTVERSION 的环境变量,
%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的
字串符表达式;否则,您会得到其数值。


C:\Users\Administrator.ZHANGHAO-PC>
C:\Users\Administrator.ZHANGHAO-PC>if 1 {
此时不应有 {。
C:\Users\Administrator.ZHANGHAO-PC>set var=Tom


C:\Users\Administrator.ZHANGHAO-PC>if %var%==Tom echo It works
It works


C:\Users\Administrator.ZHANGHAO-PC>if %var%==Jerry echo We will never see this


C:\Users\Administrator.ZHANGHAO-PC>set var=Jerry


C:\Users\Administrator.ZHANGHAO-PC>if %var%==Jerry echo We will never see this
We will never see this


C:\Users\Administrator.ZHANGHAO-PC>set var [date]
var=Jerry


C:\Users\Administrator.ZHANGHAO-PC>ipconfig>ip.txt


C:\Users\Administrator.ZHANGHAO-PC>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 1CB9-ACDC


 C:\Users\Administrator.ZHANGHAO-PC 的目录


2016/01/11  20:49    <DIR>          .
2016/01/11  20:49    <DIR>          ..
2013/11/28  21:33    <DIR>          .android
2013/11/24  15:08                17 1.txt
2013/11/09  22:21    <DIR>          CMB
2015/10/20  21:27    <DIR>          Contacts
2016/01/09  16:02    <DIR>          Desktop
2015/10/20  21:27    <DIR>          Documents
2015/10/20  21:27    <DIR>          Downloads
2013/09/20  12:46                 9 f1.txt
2016/01/03  19:35    <DIR>          Favorites
2016/01/11  20:49             1,164 ip.txt
2015/10/20  21:27    <DIR>          Links
2015/10/20  21:27    <DIR>          Music
2015/10/20  21:27    <DIR>          Pictures
2015/10/20  21:27    <DIR>          Saved Games
2015/10/20  21:27    <DIR>          Searches
2013/11/24  15:31             2,573 TraceRt.tcl
2014/11/08  17:51         3,347,784 u.exe
2015/10/20  21:27    <DIR>          Videos
               5 个文件      3,351,547 字节
              15 个目录 43,949,039,616 可用字节

三种用法:(注意一下 第二种 和 第三种 的两个参数 /a 和 /p)
第一种:直接赋值 set a=1
第二种:set /a a=1+1
第三种:set /p a=请输入一个数字:
--------------------------------------------------------
此处的等号表示赋值,并非数学意义上的等号
如第一种即表示,将1这个值赋给变量a 于是a的值就是1了。
例子:
@echo off
set a=1
echo %a%
pause>nul
运行一下,看见效果了吗?可是第三行代码,为什么变量a被两个百分号夹住了呢?答:因为此处的a为变量,为了让系统知道它是变量,必须加上百分号,这样,系统就把它当变量处理了,此处 echo %a% 在执行时就相当于这个意思: echo 1 (a是值为1的变量,所以就显示了1)
----------------------------------------------------------------------
第一种用法明白了,来看第二种:
这里有个参数 /a 什么意思呢?
@echo off
set /a a=1+1
echo %a%
pause>nul
看例子,明白了吗?/a参数表示的是一个运算时需要的参数,a的值是1+1=2,所以就是2了,运算符号有 + - * / (加 减 乘 除)
需要运算时必须加这个参数。
----------------------------------------------------------------------
来看第三种,有个 /p 的参数。
@echo off
set /p a=请输入一个数字:
echo 您输入的是%a%
pause>nul
此处 /p 参数可以让用户来定义变量的值,运行时,屏幕上会出现提示用户输入的画面。
----------------------------------------------------------------------
好了,三种用法都讲完了,都懂了吗?下面讲一下变量需要注意的几点
1、不能用纯数字或数字开头做变量,比如 set 1=5,看着就矛盾吧?还有,这样也不行: set 1a=5
2、在赋值语句的后面,不能加& 虽然&表示在同一行中执行多个命令,但在赋值语句后面,会出错的,出错原因自己想。(并不是不能加,还有一个 环境变量延迟扩展 命令我没讲,讲了以后就知道怎么加了。)
貌似就这么几点了,日后再补充。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值