zoukankan      html  css  js  c++  java
  • cmd for 用法

    1:for命令及变量 基本格式: 
    FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。 
    批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use 
    \ipipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3

    (set):指定一个或一组文件,可使用通配符,如:(D:user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }

    command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开 
    command_parameters:为特定命令指定参数或命令行开关

    IN (set):指在(set)中取值;DO command :指执行command

    参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:pass.txt)时 }。 
    用法举例: 
    @echo off 
    echo 用法格式:test.bat *.*.* > test.txt

    for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \%1.%%G /user:***istrator | find "命令成功完成" >>test.txt 
    存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立***istrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。

    /L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。 
    @echo off 
    echo 用法格式:ok.bat ip 
    FOR /F %%i IN (D:user.dic) DO smb.exe %1 %%i D:pass.dic 200 
    存为:ok.exe 说明:输入一个IP后,用字典文件d:pass.dic来暴解d:user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。

    for 命令 /f 参数

    假设a.txt某一行的内容是 111,222.333 444/555
    for /f "skip=1 tokens=1,2* delims= " %%a in (a.txt) do echo %%a %%b %%c
    skip=      tokens=        delims=
    这三项是用的最多的,根据需要.可以不用,可以一起使用,也可以只使用一个或两个.
    但是不管使用几个都要用引号将它们扩起来.当然不使用时,自然就不需要引号了.

    skip=
    for循环文本内容是以行为单位,从上至下进行的,skip=1意识就是跳过文本的第一行,即不循环第一行
    那么skip=2 自然就是跳过前两行了,依次类推.........
    delims=
    delims=后面的字符是将文本每一行的内容以delims=后面的字符分割成若干列.
    for /f "tokens=1-5 delims=,./ " %%a in (a.txt) do echo %%a %%b %%c %%d %%e
    显示结果是 111 222 333 444 555
    解释:
    意识就是把111,222.333 444/555以,./和空格(不分先后)分成了5列.注意代码中/和"后面有个空格,
    使用中要注意空格要放到最后,如"delims=,. /" 这样就不行了.
    那如果我们不使用逗号来分割会如何呢?如: "delims=./ "那么就会分割成111,222 333 444 555
    看出区别了吗?delims=后面可以是多个字符,可以是空格,也可以什么都没有.
    什么都没有代表什么呢?就是不以任何东西为分割符,也是整行的内容了.
    因为for默认是以,;和空格作分割符的,所以一般要取得整行内容通常会用"delims="这样的形式来取消for

    的默认分割符.
    tokens=
    tokens=1-5
    1-5很好理解就1至5,前面我们用delims=后面的字符为分割符,将文本内容分成了多列,那么你需要的是哪

    些列呢?

    如上例:
    通过dilims=,./ 将文本分成了111 222 333 444 555 五列.
    注意代码中前面有个%%a 这里的%%a就是代表第一列,第二列就是%%b,第三列就是%%c 依此类推.....
    那么我们如果把echo %%a %%b %%c %%d %%e 改为 echo %%e %%d %%c %%b %%a 会如何呢?
    当然.会显示 555 444 333 222 111
    如果是:echo %%b %%d 又会显示222 444
    若是第一个%%a把它改为%%i也是一样,那么第二列就是%%j...%%k...依此类推....
    明白了?就是按英文字母的顺序依此类推的.

    如果用tokens=1,2* 有什么区别呢?
    其实差不多-号代表从几至几而逗号代表单一的,如 tokens=1,5就是代表第一列和第五列,而不是1至5列.
    *号代表剩下的所有的列.如:tokens=1,2*代表%%a为第一列,%%b为第二列,%%c代表后面所有的列.
    for /f 不但可以循环文本内容还可以循环字符窜,如:
    for /f "tokens=1-3 delims=,./ " %%a in ("111,222.333 444/555") do echo %%a %%b %%c
    只要将()里的字符串用引号扩起来,for就会把它当字符串来循环,而不是文本.
    for /f "tokens=1,3* delims=,./ " %%a in ("111,222.333 444/555") do echo %%a %%b %%c
    按分隔符将字符串分段后,取第1、3、4-5三段分别作为%%a %%b %%c

    for /f "tokens=1,3* delims=,./ " %a in ("111,222.333 444/555") do echo %a %b %c %d %e
    结果显示111 333 444/555 %d %e

    请问如何单独取出文本中某一行含有IP的的"[ ]"之间的内容
    <title> 您的IP地址 </title>
    </head>
    <body style="margin:0px"><center>您的IP地址是:[124.88.120.123] </center></body></html>
    [mode/]
    代码
    @echo off
    for /f "tokens=2 delims=[]" %%a in ('findstr "您的IP地址是:" ip.asp') do (
    echo %%a
    )
    pause

    for %%i in (1 2 3 4 5) do echo %%i

    带参数 /L 的for (这里的 参数/L 可以理解为 "list" 的意思,代表一个数列)
    for /l %%i in (1 1 5) do echo %%i
    然后运行,可以发现屏幕上显示1 2 3 4 5(每字一行)

    /D参数(常用来查询 当前目录 或者 指定目录的文件夹)
    如:查询F盘根目录下的文件夹
    for /d %%i in (f:*) do echo %%i
    如果省略 括号中的 "f:",则会直接查询 批处理 所在目录的文件夹

    2> /r参数
    基本用法:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
    检查以 [drive:]path 为根的目录树中,所有符合(set)的文件或者文件夹。如果在 /R 后没有指定目录,则使用当前目录。
    for /r f: %%i in (*) do echo %%i
    for /r f: %%i in (*.bat) do echo %%i
    枚举F:盘下所有的文件(所有*.bat文件,包括子目录)

    2:if命令及变量 基本格式:

    if主要用来判断,1、两个“字符串”是否相等;2、两个数值比较,然后执行相应的命令。
    当然还有特殊用法,如结合errorlevel:if errorlevel 1 echo error
    或者结合defined(定义的意思):if defined test (echo It is defined) else echo It isn't efined

    示例:
    1、检测字符串(注意,用if检测字符串是否相等的时候,后面用的不是“=”,而是“==”)
    set "str=this is a test"
    REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO
    if "%str%"=="test" (echo OK) else echo NO
    2、检测数值:(注意,批处理中大于符号不能用:“>”,而用"gtr",其它的也类似)
    比较运算符一览:
    EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于
    检测数值 20 是否大于 15
    set /a num1=20
    set /a num2=15
    if %num1% gtr %num2% echo %num1%大于%num2%
    if %num1% EQU %num2% echo %num1%等于%num2%
    if %num1% LSS %num2% echo %num1%小于%num2%
    3、if结合errorlevel使用:
    说明:环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等
    XCOPY F: est.bat D: 
    IF ERRORLEVEL 1 ECHO 文件拷贝失败 
    IF ERRORLEVEL 0 ECHO 成功拷贝文件 如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 
    IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

    4、if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义
    示例:
    set "str1=ok"
    set "str2=no"
    if defined str1 echo str1已经被定义
    if defined str2 echo str2已经被定义
    if defined str3 (echo str3已经被定义) else echo str3 没有被定义

    IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。 
    例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。 
    0 指发现并成功执行(真);1 指没有发现、没执行(假)。 
    IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。 
    例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ") 
    IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。 
    例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。 
    IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”

  • 相关阅读:
    1、求loss:tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None))
    创建目录
    Sqli-Labs less8-10
    Sqli-Labs less-7
    Sqli-Labs less 5-6
    Sqli-Labs less1-4
    DVWA-全等级SQL注入(显注)
    ACL的配置
    NAT配置
    OSPF和ACL综合实验
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/5081253.html
Copyright © 2011-2022 走看看