windsX使用

bat脚本Windows批处理基础教程

minet · 7月25日 · 2022年 ·

目录常见用途bat命令速查常用参数echo注释Rem使用::声明dir:获取目录内容:将输出重定向到文件变量命令行参数set命令字符串数值局部变量vs全局变量环境变量输出字符串创建空字符…

目录
  • 常见用途
  • bat命令速查
    • 常用参数
  • echo
    • 注释
      • Rem
      • 使用::声明
    • dir :获取目录内容
      • > :将输出重定向到文件
        • 变量
          • 命令行参数
          • set命令
            • 字符串
            • 数值
        • 局部变量 vs 全局变量
          • 环境变量输出
            • 字符串
              • 创建
                • 空字符串
                  • 字符串拼接
                    • 字符串长度
                      • 转int
                        • 截取
                          • 右对齐
                            • 删除字符串
                              • 删除两端(保留中间)
                                • 删除空格:=
                                  • 替换
                                  • 数组
                                    • 创建
                                      • 访问
                                        • 修改
                                          • 迭代
                                            • 数组长度
                                              • 结构体
                                              • if语句
                                                • if defined :变量是否存在
                                                  • if exists:文件是否存在
                                                    • if errorlevel:测试运行的最后一个命令的退出代码
                                                    • for语句
                                                      • /d
                                                        • /r
                                                          • /l
                                                            • /f
                                                            • goto语句
                                                              • 运算符
                                                                • 关系运算符
                                                                • 系统日期
                                                                  • 日期格式化
                                                                  • 系统时间
                                                                    • 输入输出
                                                                      • 重定向
                                                                      • 函数
                                                                        • 调用 call :function_name
                                                                        • 进程
                                                                          • 查看进程列表TASKLIST
                                                                            • 终止进程
                                                                              • 启动进程
                                                                              • 别名
                                                                                • doskey 别名管理
                                                                                  • 创建
                                                                                  • 删除
                                                                              • 管道(|)

                                                                                批处理脚本文件具有特殊的扩展名BAT或CMD,这种类型的文件通过称为**命令解释器(cmd.exe)**的系统文件提供的接口(shell)来识别和执行。

                                                                                常见用途

                                                                                • 为不同的目的设置服务器
                                                                                • 自动管理活动和日志,如删除不需要的文件或日志文件
                                                                                • 自动将应用程序从一个环境部署到另一个环境。
                                                                                • 立即在各种机器上安装程序。

                                                                                bat命令速查

                                                                                命令备注
                                                                                VER显示正在使用的MS-DOS的版本
                                                                                ASSOC这是将扩展名与文件类型(FTYPE)相关联的批处理命令,显示现有关联或删除关联
                                                                                cd更改不同的目录,或显示当前目录
                                                                                CLS清屏
                                                                                COPY文件复制
                                                                                DEL删除文件
                                                                                DIR列出目录内容
                                                                                DATE系统日期
                                                                                ECHO显示消息,或打开、关闭命令回显
                                                                                EXIT退出DOS控制台
                                                                                MD创建目录
                                                                                MOVE移动文件或目录
                                                                                PATH显示或设置路径变量
                                                                                PAUSE等待输入
                                                                                PROMPT用于更改或重置cmd.exe提示符
                                                                                RD删除目录(需为空)
                                                                                REN重命名文件和目录
                                                                                REM注释
                                                                                START在新窗口中启动程序,或打开文档
                                                                                TIME设置或显示时间
                                                                                TYPE将文件或文件的内容打印到输出中
                                                                                VOL显示卷标
                                                                                ATTRIB显示或设置当前目录中的文件的属性
                                                                                CHKDSK检查磁盘是否有问题
                                                                                CHOICE为用户提供了一个选项列表
                                                                                CMD调用另一个命令提示符实例
                                                                                COMP根据文件大小比较2个文件
                                                                                CONVERT将卷从FAT16或FAT32文件系统转换为NTFS文件系统
                                                                                DRIVERQUERY显示所有已安装的设备驱动程序及其属性
                                                                                EXPAND从压缩的.cab压缩文件中提取文件
                                                                                FIND在文件或输入中搜索字符串,输出匹配的行
                                                                                FORMAT将磁盘格式化为使用Windows支持的文件系统(如FAT,FAT32或NTFS),从而覆盖磁盘的先前内容
                                                                                HELP显示Windows提供的命令的列表
                                                                                IPCONFIG显示Windows IP配置。显示连接的配置和连接的名称
                                                                                LABEL添加,设置或删除磁盘标签
                                                                                MORE一次显示一个或多个文件的内容
                                                                                NET根据使用的命令提供各种网络服务
                                                                                PING通过网络将ICMP/IP “回显”发送到指定的地址的包
                                                                                SHUTDOWN关闭计算机,或者注销当前用户
                                                                                SORT从源文件获取输入,并按字母顺序排序其内容,从A到Z或从Z到A。它将在控制台上打印输出
                                                                                SUBST将驱动器号分配给本地文件夹,显示当前分配或删除分配
                                                                                SYSTEMINFO该批处理命令显示计算机及其操作系统的配置
                                                                                TASKKILL该批处理命令结束一个或多个任务
                                                                                TASKLIST列出任务,包括任务名称和进程标识(PID)
                                                                                XCOPY以更高级的方式复制文件和目录
                                                                                TREE将当前目录的所有子目录的树显示为递归或深度的任何级别
                                                                                FC列出两个文件之间的实际差异
                                                                                DISKPART显示和配置磁盘分区的属性
                                                                                TITLE该批处理命令设置控制台窗口中显示的标题
                                                                                SET显示当前系统上的环境变量列表

                                                                                常用参数

                                                                                /L: for循环移动范围的/L参数用于迭代数组
                                                                                /A:数值

                                                                                echo

                                                                                @echo off
                                                                                • “echo off” :关闭脚本的显示(不显示命令)。
                                                                                • “@” :使命令也适用于自己。

                                                                                注释

                                                                                Rem

                                                                                Rem Remarks

                                                                                程序执行时忽略Rem关键字之后的任何内容。

                                                                                使用::声明

                                                                                :: Remarks

                                                                                dir :获取目录内容

                                                                                > :将输出重定向到文件

                                                                                @echo offRem This is for listing down all the files in the directory Program filesdir "C:\Program Files" > C:\lists.txtecho "The program has completed"

                                                                                变量

                                                                                命令行参数

                                                                                rem Test.bat@echo offecho %1echo %2echo %3

                                                                                运行方式

                                                                                Test.bat 1 2 3

                                                                                set命令

                                                                                set /A variable-name=value

                                                                                • variable-name: 变量的名称
                                                                                • value:变量值。
                                                                                • /A:如果该值本质上是数值,则使用此开关。

                                                                                字符串

                                                                                @echo offset message=Hello Worldecho %message%rem 变量需要包含在%符号中显示

                                                                                数值

                                                                                @echo offSET /A a=5SET /A b=10SET /A c=%a% + %b%echo %c%

                                                                                局部变量 vs 全局变量

                                                                                • 默认情况下为全局变量。
                                                                                • 调用SETLOCAL命令,使变量局部在脚本的范围内。
                                                                                • 在调用SETLOCAL之后,任何变量赋值在调用ENDLOCAL,调用EXIT,或者当执行到达脚本中的文件结尾(EOF)时都会返回。
                                                                                @echo offset globalvar=5SETLOCALset var=13145set /A var=%var% + 5echo %var%echo %globalvar%ENDLOCAL

                                                                                环境变量输出

                                                                                @echo offecho %java_HOME%

                                                                                字符串

                                                                                创建

                                                                                set message=Hello World

                                                                                空字符串

                                                                                SET a=if [%a%]==[] echo "String A is empty"

                                                                                要检查是否存在空字符串,需要在方括号中包含变量名,并将其与方括号中的值进行比较。

                                                                                字符串拼接

                                                                                @echo offSET a=HelloSET b=WorldSET /A d=50SET c=%a% and %b% %d%echo %c%:: Hello and World 50

                                                                                字符串长度

                                                                                @echo offset str=Hello Worldcall :strLen str strlenecho String is %strlen% characters longexit /b:strLensetlocal enabledelayedexpansion:strLen_Loop     if not "!%1:~%len%!"=="" set /A len+=1 & goto :strLen_Loop(endlocal & set %2=%len%)goto :eof

                                                                                转int

                                                                                使用set变量设置为字符串的变量后,可以使用set变量的**/A开关转换为整数**。

                                                                                @echo offset var=13145set /A var=%var% + 5echo %var%

                                                                                截取

                                                                                %variable:~num_chars_to_skip%%variable:~num_chars_to_skip,num_chars_to_keep%

                                                                                输出:

                                                                                Helloworld 
                                                                                Hello

                                                                                ~0,5用于指定需要显示的字符

                                                                                右对齐

                                                                                @echo offset x=1000set y=1set y=%y%echo %x% set y=%y:~-4%echo %y%

                                                                                输出​​​​​​​

                                                                                1000
                                                                                1

                                                                                使用~-4选项来表示只想显示字符串y的最后4个字符

                                                                                删除字符串

                                                                                @echo offset str=Batch scripts is easy. It is really easy.echo %str%:: 删除isset str=%str:is=%echo %str%:: Batch scripts easy. It really easy.

                                                                                删除两端(保留中间)

                                                                                @echo offset str=Batch scripts is easy. It is really easyecho %str% set str=%str:~1,-1%echo %str%:: atch scripts is easy. It is really eas

                                                                                删除空格:=

                                                                                @echo offset str=This string has a lot of spacesecho %str% set str=%str:=%echo %str%:: Thisstringhasalotofspaces

                                                                                替换

                                                                                @echo offset str=This message needs changed.echo %str% set str=%str:needs=has%echo %str%:: This message has changed.

                                                                                数组

                                                                                创建

                                                                                • 方法一:set
                                                                                set a[0]=1
                                                                                • 方法二:值列表遍历
                                                                                @echo offset list=1 2 3 4(for %%a in (%list%) do (     echo %%a))

                                                                                访问

                                                                                echo %a[0]%

                                                                                修改

                                                                                Set a[3]=4

                                                                                迭代

                                                                                @echo offsetlocal enabledelayedexpansionset topic[0]=commentsset topic[1]=variablesset topic[2]=Arraysset topic[3]=Decision makingset topic[4]=Time and dateset topic[5]=Operators for /l %%n in (0,1,5) do (     echo !topic[%%n]!)

                                                                                for循环移动范围的/L参数用于迭代数组

                                                                                数组长度

                                                                                @echo offset Arr[0]=1set Arr[1]=2set Arr[2]=3set Arr[3]=4set "x=0":SymLoop if defined Arr[%x%] (     call echo %%Arr[%x%]%%     set /a "x+=1"     GOTO :SymLoop)echo "The length of the array is" %x%

                                                                                结构体

                                                                                @echo offset len=3set obj[0].Name=Joeset obj[0].ID=1set obj[1].Name=Markset obj[1].ID=2set obj[2].Name=Mohanset obj[2].ID=3set i=0:loopif %i% equ %len% goto :eofset cur.Name=set cur.ID=for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do (     set cur.%%k=%%l)echo Name=%cur.Name%echo Value=%cur.ID%set /a i=%i%+1goto loop

                                                                                if语句

                                                                                if %c%==15 (echo "The value of variable c is 15") else (echo "Unknown value")

                                                                                if defined :变量是否存在

                                                                                if defined str1 echo "Variable str1 is defined"

                                                                                if exists:文件是否存在

                                                                                if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

                                                                                if errorlevel:测试运行的最后一个命令的退出代码

                                                                                if errorlevel n somecommand

                                                                                各种命令发出整数退出代码来表示命令的状态。 通常,如果命令成功完成,则命令通过传递0;如果命令失败,命令通过传递1。

                                                                                for语句

                                                                                • %variable 指定一个单一字母可替换的参数。注意:批处理脚本中使用%%variable
                                                                                • (set) 指定一个或一组文件。可以使用通配符。
                                                                                • command 指定对每个文件执行的命令。
                                                                                • command-parameters 为特定命令指定参数或命令行开关。

                                                                                /d

                                                                                /r

                                                                                /l

                                                                                /f

                                                                                goto语句

                                                                                @echo offSET /A a=5 if %a%==5 goto :labelaif %a%==10 goto :labelb:labelaecho "The value of a is 5"exit /b 0:labelbecho "The value of a is 10"

                                                                                运算符

                                                                                关系运算符

                                                                                运算符备注
                                                                                EQU相等
                                                                                NEQ不等
                                                                                LSS左小于右
                                                                                LEQ小于等于
                                                                                GTR大于
                                                                                GEQ大于等于

                                                                                系统日期

                                                                                echo %DATE%

                                                                                日期格式化

                                                                                @echo offecho/Today is: %year%-%month%-%day%goto :EOFsetlocal ENABLEEXTENSIONSset t=2&if "%date%z" LSS "A" set t=1 for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do (     for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (         set %%a=%%d&set %%b=%%e&set %%c=%%f))endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

                                                                                系统时间

                                                                                echo %TIME%

                                                                                输入输出

                                                                                • 0:stdin 标准输入
                                                                                • 1:stdout 标准输出
                                                                                • 2:stderr 错误消息

                                                                                重定向

                                                                                DIR C:\ > lists.txt 2> &1
                                                                                • 使用文件编号和”&”前缀来组合stdout和stderr流

                                                                                函数

                                                                                :function_nameDo_somethingEXIT /B 0
                                                                                • function_name是赋予函数的名字,它应该与函数的实际功能相匹配。
                                                                                • EXIT语句用于确保函数正常退出.
                                                                                :DisplaySET /A index=2echo The value of index is %index%EXIT /B 0

                                                                                调用 call :function_name

                                                                                @echo offRem mainSETLOCALCALL :Display 5 , 10EXIT /B %ERRORLEVEL%Rem function:Displayecho The value of parameter 1 is %~1echo The value of parameter 2 is %~2EXIT /B 0
                                                                                • 确保在主程序中放入EXIT / B%ERRORLEVEL%语句,以便将主程序的代码与函数分开。
                                                                                • 使用~1来访问发送给函数的第一个参数,同样使用~2来访问第二个参数。

                                                                                进程

                                                                                查看进程列表TASKLIST

                                                                                :: 获取内存大于40MB的进程tasklist /fi "memusage gt 40000"
                                                                                  
                                                                                /S system指定要连接的远程系统
                                                                                /U [domain]user指定命令应在其下执行的用户上下文
                                                                                /P [password]指定给定用户上下文的密码。 提示输入,如果省略。
                                                                                /M [module]列出当前使用给定的exe / dll名称的所有任务。 如果未指定模块名称,则显示所有已加载的模块。
                                                                                /SVC显示每个进程中托管的服务。
                                                                                /V显示详细的任务信息。
                                                                                /FI filter显示一组符合过滤器指定条件的任务。
                                                                                /FO format指定输出格式。 有效值:TABLE,LIST,CSV。
                                                                                /NH指定“列标题”不应显示在输出中。 仅适用于TABLE和CSV格式。
                                                                                :: 获取内存大于40MB的进程tasklist /fi "memusage gt 40000"

                                                                                终止进程

                                                                                START "title" [/D path] [options] "command" [parameters]
                                                                                  
                                                                                /S system指定要连接的远程系统
                                                                                /U [domain]user指定命令应在其下执行的用户上下文。
                                                                                /P [password]指定给定用户上下文的密码。 提示输入,如果省略。
                                                                                /FI FilterName应用过滤器来选择一组任务,允许使用*通配符。
                                                                                /PID processID指定要终止的进程的PID。使用TaskList来获取PID。
                                                                                /IM ImageName指定要终止的进程的映像名称。 通配符*可用于指定所有任务或图像名称。
                                                                                /T终止指定的进程以及由其启动的任何子进程。
                                                                                /F指定强制终止进程。
                                                                                :: 杀死(终止)打开的记事本任务taskkill /f /im notepad.exe:: 杀死了一个ID为9901的进程taskill /pid 9901

                                                                                启动进程

                                                                                START "title" [/D path] [options] "command" [parameters]
                                                                                  
                                                                                titleCMD窗口标题栏的文本(必需)
                                                                                path起始目录。
                                                                                command命令,批处理文件或可执行程序运行。
                                                                                parameters传递给命令的参数

                                                                                options:

                                                                                  
                                                                                /MIN启动窗口最小化。
                                                                                /MAX启动窗口最大化。
                                                                                /LOW使用IDLE优先级。
                                                                                /NORMAL使用NORMAL优先级。
                                                                                /ABOVENORMAL使用ABOVENORMAL优先级。
                                                                                /BELOWNORMAL使用BELOWNORMAL优先级。
                                                                                /HIGH使用HIGH优先级。
                                                                                /REALTIME使用REALTIME优先级。
                                                                                :: 在新窗口中运行批处理脚本test.bat。 窗口将以最小化模式启动,并且指定标题为:“Test Batch Script”。START "Test Batch Script" /Min test.bat:: 在另一个进程中运行Microsoft Word,然后在MS Word中打开文件TESTA.txtSTART "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

                                                                                别名

                                                                                dw=dir /w

                                                                                当要执行dir /w命令时,可以简单地键入dw这个单词。dw这个词现在已经成为命令dir /w的别名。

                                                                                doskey 别名管理

                                                                                DOSKEY [options] [macroname=[text]]

                                                                                创建

                                                                                @echo offdoskey cd=cd/testdoskey d=dir

                                                                                删除

                                                                                @echo offdoskey cd=cd/testdoskey d=dird=

                                                                                将d的值设置为NULL,所以宏d将被删除。

                                                                                管道(|

                                                                                管道运算符(|)将一个命令的输出(默认为STDOUT)引导到另一个命令的输入(默认为STDIN)。

                                                                                :: 两个命令同时启动,但是sort命令暂停,直到它接收到dir命令的输出。:: sort命令使用dir命令的输出作为输入,然后将其输出发送到句柄1(即STDOUT)。dir C:\ | sort

                                                                                到此这篇关于教你编写bat脚本Windows批处理的文章就介绍到这了,更多相关bat脚本Windows批处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!