zoukankan      html  css  js  c++  java
  • 批处理笔记

    一、常见的命令

    1、REM和::
    2、ECHO和@
    3、PAUSE
    4、ERRORLEVEL
    5、TITLE
    6、COLOR
    7、mode 配置系统设备
    8、GOTO 和:
    9、FIND
    10、START
    11、ASSOC和ftype
    12、pushd和popd
    13、CALL
    14、shift
    15、IF
    16、setlocal与变量延迟
    17、ATTRIB 显示或更改文件属性

    二、命令解释

    1、echo. 输出空行,相当于输入一个回车
    echo 文件内容>文件名
    echo 追加文件内容>>文件名
    2、mode
    mode con cols=113 lines=15 & color 9f
    此命令设置DOS窗口大小:15行,113列
    3、call

    @echo off
    echo 产生一个临时文件>tmp.txt
    Rem 下行先保存当前目录,再将C:windows设为当前目录
    pushd c:windows
    call :sub tmp.txt
    Rem 下行恢复前次的当前目录
    Popd
    call :sub tmp.txt
    pause
    Del tmp.txt
    exit
    :sub
    echo 删除引号: %~1
    echo 扩充到路径: %~f1
    echo 扩充到一个驱动器号: %~d1
    echo 扩充到一个路径: %~p1
    echo 扩充到一个文件名: %~n1
    echo 扩充到一个扩展名: %~x1
    echo 扩充的路径指含有短名: %~s1
    echo 扩充到文件属性: %~a1
    echo 扩充到文件的日期/时间: %~t1
    echo 扩充到文件的大小: %~z1
    echo 扩充到驱动器号和路径: %~dp1
    echo 扩充到文件名和扩展名: %~nx1
    echo 扩充到类似DIR的输出行: %~ftza1
    echo.
    goto :eof
    

    4、setlocal与变量延迟
    下面代码执行后结果为"4"
    批处理运行命令的机制是按行读取的。先将一行整句读取并作预处理。

    @echo off
    set a=4
    set a=5 & echo %a%
    pause
    

    不用临时变量,交换两个变量

    @echo off
    set var1=abc
    set var2=123
    echo 交换前: var1=%var1% var2=%var2%
    set var1=%var2% & set var2=%var1%
    echo 交换后: var1=%var1% var2=%var2%
    pause
    

    启动变量延迟
    下面代码返回结果为"5"

    @echo off
    ::setlocal enabledelayedexpansion启动变量延迟,
    ::并且变量要用一对叹号"!!"括起来
    setlocal enabledelayedexpansion
    set a=4
    set a=5 & echo !a!
    pause
    

    输出1,2,3,4,5

    @echo off
    setlocal enabledelayedexpansion
    for	/l %%i in (1,1,5) do (
    set a=%%i
    echo !a!
    )
    pause
    

    三、常用特殊符号

    1、%
    引用变量用%var%,调用程序外部参数用%1至%9
    %0 批处理文件本身,包括完整的路径和扩展名
    %1 第一个参数
    %9 第九个参数
    %* 从第一个参数开始的所有参数
    参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
    例:最简单的复制文件自身的方法
    copy %0 d:wind.bat
    2、| 命令管道符
    格式:第一条命令 | 第二条命令 [| 第三条命令...]
    第一条命令的结果作为第二条命令的参数使用,记得unix中这种方式很常见。
    例:
    dir c: |find "txt"
    以上命令是:查找C:所有,并发现txt字符串。
    3、^ 转义字符
    echo test ^>1.txt
    结果是:输出"test >1.txt"
    4、& 组合命令
    语法:第一条命令 & 第二条命令 [& 第三条命令]
    当第一条命令执行失败了,也不影响后面命令的执行,里面的命令是顺序执行的,从前往后执行。
    例如:
    dir z: & dir y: & dir c:
    以上命令会连续执行显示z,y,c盘的内容,不理会该盘是否存在。
    5、&& 组合命令
    语法:第一条命令 && 第二条命令 [&& 第三条命令]
    同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有目录。
    这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行。
    例如:
    dir z: && dir y: && dir c:
    6、|| 组合命令
    语法:第一条命令 || 第二条命令 [|| 第三条命令]
    用这种方法可以同时执行多条命令,当第一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。
    提示:组合命令和重定向命令一起使用必须注意优先级
    管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令。
    dir c: >a.txt && dir d: >>a.txt:把C盘和D盘的文件和文件夹列出到a.txt文件中。
    7、""字符串界定符
    双引号允许在字符串中包含空格,进入一个特殊命令可以用如下方法

    @echo off
    cd "program files"
    cd progra~1
    cd pro*
    pause  
    

    8、, 逗号
    逗号相当于空格,在某些情况下","可以当做空格使用
    例如:
    dir,c:
    9、; 分号
    当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。
    例如:

    dir c:;d:;e:;z:
    以上命令相当于
    dir c:
    dir d:
    dir e:
    dir z:
    

    10、() 括号
    括号中可以包含多行命令,这些命令将被看成一个整体,视为一条命令行。
    例:

    @echo off
    echo 1 & echo 2 & echo 3
    可以写成
    (
    echo 1
    echo 2
    echo 3
    )
    pause
    

    11、! 感叹号
    在变量延迟中,用来表示变量,即%var%应该表示为!var!

    四、DOS循环:for命令详解

    1、基本格式
    for %%variable in (set) do command [command-parameters]
    参数:for有4个参数 /d /l /r /f
    例:

    @echo off
    ::打印C盘根目录下的全部目录名字
    for /d %%i in (c:*) do echo %%i
    pause
    ::把当前路径下文件夹的名字只有1-3个字母的打出来
    for /d %%i in (???) do echo %%i
    pause
    

    *号表示任意N个字符,?号表示任意一个字符
    2、/r 递归

    @echo off
    ::列出C盘根目录和每个目录的子目录下面全部的exe文件
    for /r c: %%i in (*.exe) do echo %%i
    pause
    ::列出当前路径目录和每个目录的子目录下面全部的exe文件
    for /r %%i in (*.exe) do echo %%i
    pause
    

    3、/l
    表示以增量形式从开始到结束的一个数字序列
    因此,(1,1,5)将产生序列1 2 3 4 5,(5,-1,1)将产生序列5 4 3 2 1
    例:

    @echo off
    ::打印出1到5的数字
    for /l %%i in (1,1,5) do @echo %%i
    pause
    ::打开5个CMD窗口
    for /l %%i in (1,1,5) do start cmd
    pause
    

    4、/f 迭代及文件解析
    例:

    @echo off
    rem 首先建立临时文件test.txt
    echo ;注释行,这是临时文件,用完删除 >test.txt
    echo 11段 12段 13段 14段 15段 16段 >>test.txt
    echo 21段 22段 23段 24段 25段 26段 >>test.txt
    echo 31段 -32段 -33段 -34段 -35段 -36段 >>test.txt
    for /f "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
    pause
    del test.txt
    ::eol=; 分号开头的行为注释行
    ::tokens=1,3* 将每行第1段,第3段和剩余字段分别赋予变量%%i,%%j,%%k
    :: delims=,-  (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后
    

    输出命令的结果

    @echo offf
    ::输出命令的结果
    for /f "delims=" %%i in ('net user') do @echo %%i
    pause
    ::括号内的内容用单引号引起来,就表示那个当命令执行
    ::加"delims="为了让空格的行能整行显示出来
    
    ::在PATH变量里指定的路径里搜索notepad.exe文件
    for /f "delims=" %%i in ("notepad.exe") do @echo %%~$PATH:i
    pause
    ::显示c:windowssystem32
    otepad.exe
    

    五、批处理中的变量

    1、系统变量
    2、自定义变量

    @echo off
    set var=我是值
    echo %var%
    pause
    ::接收用户输入
    set /p var=请输入变量的值
    echo %var%
    pause
    

    六、if...else... 条件语句

    例如:

    if exist filename (
    	del filename
    ) else (
    	echo filename missing
    )
    也可写成:
    if exist filename (del filename) else (echo filename missing)
    

    七、子程序

    1、示例1

    @echo off
    call :sub return 你好
    echo 子程序返回值:%return%
    pause
    
    :sub
    set %1=%2
    goto :eof
    

    2、示例2:求多个整数相加的子程序

    @echo off
    set sum=0
    call :sub 10 20 35
    echo 数据求和结果:%sum%
    pause
    
    :sub
    rem 参数1为返回变量名称
    set /a %1=%1+%2
    shift /2
    if not "%2"=="" goto sub
    goto :eof
    

    八、用ftp实现自动下载

    可以将ftp命令组合保存为一个文本文件,然后用一下命令调用即可
    ftp -n -s:filename
    示例:
    将下面内容保存为ftp.txt文件,可以使用ftp -n -s:ftp.txt命令进行自动下载

    open 90.52.8.3 #打开ftp地址,默认端口号可以不写
    user iware #用户为iware
    password8848 #密码
    bin #二进制传输模式
    prompt
    cd tmp1 #切换至iware用户下的tmp1目录
    pwd
    lcd d:download #本地目录
    mget * #下载tmp1目录下的所有文件
    bye #退出ftp
    

    九、使用"7-zip"和"winrar"实现命令行压缩和解压功能

    参考相关帮助文档

    十、调用VB******程序

    使用windows脚本宿主,可以再命令提示符下运行脚本。
    C******.exe提供了用于设置脚本属性的命令行开关。
    需要查相关资料,不懂...

    十一、将批处理转化为可执行文件

    Bat2Com工具
    用法:Bat2Com fileName
    dos环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd

    十二、时间延迟

    执行一条命令后延迟一段时间再进行下条命令
    示例1:利用ping命令延时

    @echo off
    echo 延时前:%time%
    ping /n 3 127.0.0.1 >null
    echo 延时后:%time%
    pause
    

    解说:用到了ping命令的"/n"参数,表示要发送多少次请求到指定的ip。127.0.0.1可以简写为127.1。">null"就是屏蔽掉ping命令所显示的内容。

    示例2:利用for命令延时

    @echo off
    echo 延时前:%time%
    for /l %%i in (1,1,5000) do echo %%i>null
    echo 延时后:%time%
    pause
    

    解说:利用一个计次循环并屏蔽它所显示的内容来达到延时的目的。

    示例3:利用vbs延迟函数,精确度毫秒,误差1000毫秒内

    @echo off
    echo %time%
    call :delay 5000
    echo %time%
    pause
    exit
    
    :delay
    echo W******.Sleep %1>delay.vbs
    C****** //B delay.vbs
    del delay.vbs
    goto :eof 
    

    4、示例:模拟进度条

    @echo off
    mode con cols=113 lines=15 & color 9f
    cls
    echo.
    echo 程序正在初始化...
    echo.
    echo ---------------------------------
    set /p= ■<null
    for /l %%i in (1 1 38) do set /p a=■<null & ping /n 1 127.0.0.1>null
    echo -----------------------------------
    pause
    

    解说:set /p a=■<null的意思是:只显示提示信息"■"且不换行,也不需手工输入任何信息,这样可以使"■"在同一行逐个输出。"ping /n 1 127.1>null"是输出每个"■"的时间间隔,即每隔多少时间输出一个"■"。

    十三、后记

    1、这几天在工作中用到了批处理,感觉批处理很方便也很强大,所以学习了下,做个记录。希望能帮助到一些要学习批处理的同学。如果大家有好的学习资源,记得要分享哦。
    2、在dos中可以使用cmdName /? 查看帮助信息。

    作者:liujf
    出处:http://www.cnblogs.com/liujf5566/
    本文版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利~

  • 相关阅读:
    怎样用ZBrush中的Curves和Insert笔刷创建四肢
    如何利用ZBrush中的DynaMesh创建身体(二)
    如何利用ZBrush中的DynaMesh创建身体(一)
    如何用ZBrush雕刻出栩栩如生的头发(二)
    Fisker大师用ZBrush制作兽人萨尔全过程
    如何用ZBrush雕刻出栩栩如生的头发(一)
    ZBrush中的SubTool工具该怎样使用
    Access denied for user 'Administrator'@'localhost' (using password: YES)
    java.lang.NoClassDefFoundError: org/apache/ibatis/session/SqlSession
    Unable to install breakpoint in
  • 原文地址:https://www.cnblogs.com/liujf5566/p/4982241.html
Copyright © 2011-2022 走看看