• Bat笔记


    Bat笔记

    目录

    Bat笔记

    注释

    输出

    变量

    全局变量

    自定义变量

    延迟变量

    操作符

    批处理调用

    If判断

    For循环

    函数

    暂停

    变量扩充

    字符串截取

    字符串替换

    字符串查找


    • 注释

    :行注释,不会有命令回显

    :: 行注释,不会有命令回显

    %行注释,不会有命令回显,不常用,慎用%

    rem 注释内容,会有命令回显

    goto label

    块注释,以[goto label]开始[:label]结尾。

    label自定义,有命令回显:goto label

    :label

    • 输出

    @echo off/on  

    表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显

    echo off/on

    表示关闭其他所有命令(不包括本身这条命令)的回显

    echo.

    中间没有空格,表示换行

    echo Y|DEL ./test

    使用管道命令,确认删除文件

    echo helloworld>nul

    相当于不输出到标准控制台

    • 变量

    • 全局变量

    %0代指批处理文件自身

    %1 代表接收的第一个参数,一共1-9个参数

    %ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。

    %APPDATA% 本地 返回默认情况下应用程序存储数据的位置。

    %CD% 本地 返回当前目录字符串。

    %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。

    %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。

    %COMPUTERNAME%  系统 返回计算机的名称。

    %COMSPEC%  系统 返回命令行解释器可执行程序的准确路径。

    %DATE%  系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关

    date 命令的详细信息,请参阅 Date。

    %ERRORLEVEL%  系统 返回上一条命令的错误代码。通常用非零值表示错误。

    %HOMEDRIVE%  系统 返回连接到用户主目录的本地工作站驱动器号。在“本地用户和组”中指定的。

    %HOMEPATH%  系统 返回用户主目录的完整路径。用户主目录是在“本地用户和组”中指定的。

    %HOMESHARE%  系统 返回用户的共享主目录的网络路径。用户主目录是在“本地用户和组”中指定的。

    %LOGONSERVER%  本地 返回验证当前登录会话的域控制器的名称。

    %NUMBER_OF_PROCESSORS%  系统 指定安装在计算机上的处理器的数目。

    %OS%  系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。

    %PATH% 系统 指定可执行文件的搜索路径。

    %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。

    %PROCESSOR_ARCHITECTURE% 系统返回处理器的芯片体系结构。值x86或IA64基于Itanium

    %PROCESSOR_IDENTFIER% 系统 返回处理器说明。

    %PROCESSOR_LEVEL%  系统 返回计算机上安装的处理器的型号。

    %PROCESSOR_REVISION% 系统 返回处理器的版本号。

    %PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。

    %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。

    %SYSTEMDRIVE% 系统返回包含系统根目录的驱动器。

    %SYSTEMROOT%  系统 返回 Windows server operating system 根目录的位置。

    %TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。

    %TIME% 系统返回当前时间。使用与 time /t 命令相同的格式

    %USERDOMAIN% 本地 返回包含用户帐户的域的名称。

    %USERNAME% 本地 返回当前登录的用户的名称。

    %USERPROFILE% 本地 返回当前用户的配置文件的位置。

    %WINDIR% 系统 返回操作系统目录的位置。

    • 自定义变量

    %i 可以是小写a-z或者大写A-Z,他们区分大小写,FOR会把每个读取到的值给他;

    set path=%~dp0

    set path=c:/windows

    echo %path%

    set var=0

    set /a var+=1 // /a表示expression 即可以用各种表达式为变量赋值。

    set /p var=请输入变量的值    //接收用户键盘输入

    • 延迟变量

    @echo off

    setlocal enabledelayedexpansion

    for /l %%i in (1,1,5) do (

    set a=%%i

    echo !a!

    )

    pause

    结果:

    1

    2

    3

    4

    5

    • 操作符

    >>   重定向符,传递并在文件的末尾追加,而>是覆盖

    >     输出重定向

    <<   输入追加

           <     输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。

           ^     是对特殊符号<,>,&的前导字符,echo test ^>1.txt

           &    第一条命令 & 第二条命令,当第一个命令执行失败了,也不影响后边的命令执行。

    &&  第一条命令 && 第二条命令,当碰到执行出错的命令后将不执行后面的命令

    ||      第一条命令 || 第二条命令,当一条命令失败后才执行第二条命令

    ""     双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法

    ,      逗号相当于空格,在某些情况下“,”可以用来当做空格使

    ()     左右括号必须成对使用,括号中可以包括多行命令

    !     在变量延迟问题中,用来表示变量,即%var%应该表示为!var!

    • 批处理调用

    在新窗口中执行命令

    start "新窗口标题" mvn clean install –DskipTests

    start /max "新窗口标题" mvn clean install –DskipTests

    start /min "新窗口标题" mvn clean install –DskipTests

    :: 等任务执行完,手动关闭窗口后,进行下一个任务

    start /w "新窗口标题" mvn clean install –DskipTests

    从批处理程序调用另一个批处理程序,并且不终止父批处理程序

    call mvn clean install -DskipTests

    • If判断

    IF [NOT] ERRORLEVEL number (command) // 一般返回值为0表示成功,1表示失败。

    IF [NOT] string1==string2 (command) //如果字符串相等

    IF [NOT] EXIST filename (command) //如果filename文件存在

    if [NOT] %num1% LSS %num2% //num1如果小于num2

    if [NOT] %num1% LEQ %num2% //num1如果小于等于num2

    if [NOT] %num1% gtr %num2% //num1如果大于num2

    if [NOT] %num1% geq %num2% //num1如果大于等于num2

    if [NOT] %num1% EQU  %num2% //num1如果等于num2

    if [NOT] %num1% NEQ %num2% //num1如果不等于num2

    if defined var //变量var是否被定义

    • For循环

    FOR 参数 %%变量名 IN (相关文件或命令) DO (执行的命令)

        %%变量名:

    可以是小写a-z或者大写A-Z,他们区分大小写,FOR会把每个读取到的值给他;

    参数:

    /d 表示目录,它只显示指定目录下的目录名字,例如for /d %%i in (*) do @echo %%i

    /r 表示递归指定目录及子目录,例如for /r c:\ %%i in (*.exe) do @echo %%i

        语法为FOR /R [[drive:]path] %%variable IN (set) DO command

    /l 表示迭代数值范围,例如for /l %%i in (1,1,5) do @echo %%i

    语法为for /l %%Variable in (Start,Step,End) do Command

    /f 依次将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行,

        FOR /F ["options"] %%i IN (file) DO command

    FOR /F ["options"] %%i IN ("string") DO command

    FOR /F ["options"] %%i IN ('command') DO command

    Skip:跳过这些无用的行,直接从第N+1行开始处理

    Delims:用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键

    tokens:delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个

    eol用来指定当一行以什么符号开始时,就忽略它。

    for /f "skip=2 eol=. tokens=2,3 delims= ," %%i in (a.txt) do echo %%i %%j

    • 函数

    • 暂停

    Pause 暂停命令执行

    • 变量扩充

    %~0 删除任何引号(")

    %~f0 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)

    %~d0 仅将 %0 扩充到一个驱动器号

    %~p0 仅将 %0 扩充到一个路径

    %~n0 仅将 %0 扩充到一个文件名(“n”是name 文件名)

    %~x0 仅将 %0 扩充到一个文件扩展名

    %~s0 扩充的路径只含有短名(“s”为Short,短的)

    %~a0 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)

    %~t0 将 %0 扩充到文件的日期/时间(“t”time)

    %~z0 将 %0 扩充到文件的大小(Size 大小)

    • 字符串截取

    %var:~startIndex,charNum%

    startIndex正数时从0开始从左到右,负数时从1开始从右到左。

    charNum 正数表示截取charNum个字符,负数表示从右到左丢掉charNum个字符,再截取从startIndex到结尾的字符串

    str=0123456

    str:~2,4=2345

    str:~-4,2=34

    str:~2,-4=2

    str:~-4,-2=34

          

    • 字符串替换

    %变量:旧文本=新文本%

    set aa=伟大的中国!我为你自豪!

    echo 替换前:%aa%

    echo 替换后:%aa:中国=中华人民共和国%

    • 字符串查找

    %变量:旧文本=新文本%

    set str=0123456

    echo %str%|findstr "^abc">nul

    echo errorlevel=%errorlevel%

    echo %str%|findstr "^012">nul

    echo errorlevel=%errorlevel%

  • 相关阅读:
    ke8学校陈老师H5
    Navicat的安装及如何将PG库内的数据导出CSV
    linux安全--DNS服务部署
    传奇微端需要下载客户端吗?传奇微端架设教程,微端配置教程
    java_springboot水果购物商城销售管理系统
    hadoop伪分布模式配置
    彻底理解并解决服务器出现大量TIME_WAIT
    JSON详解
    『Java安全』XStream 1.4.13反序列化漏洞CVE-2020-26217复现与浅析
    宏观经济学试题
  • 原文地址:https://blog.csdn.net/wangjz2008/article/details/126351032