批处理教程pdf_批处理怎么用

批处理教程pdf_批处理怎么用批处理是Windows自带的一个脚本引擎,语法简洁、内置一些功能强大的命令,并且可以与Windows上的其他软件进行良好的通信。批处理能够提供一系统自动化处理功能,大幅提高日常工作中的一些琐碎重复事情的效率。1.概念批处理(Batch),顾名思义即是指批量处理。批处理是基于dos命令行,Windows默认内置解释器cmd.exe的脚本语言。批处理文件默认保存为.bat或.cmd。批处理是基于Dos命令行,所以批处理是没有GUI的,是运行在命令提示符终端(CommandPromptTermina

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

批处理是Windows自带的一个脚本引擎,语法简洁、内置一些功能强大的命令,并且可以与Windows上的其他软件进行良好的通信。批处理能够提供一系统自动化处理功能,大幅提高日常工作中的一些琐碎重复事情的效率。

1. 概念

  • 批处理(Batch),顾名思义即是指批量处理。批处理是基于dos命令行,Windows默认内置解释器cmd.exe的脚本语言。批处理文件默认保存为.bat或.cmd。
  • 批处理是基于Dos命令行,所以批处理是没有GUI的,是运行在命令提示符终端(Command Prompt Terminal)上的, Command Prompt Terminal也被称为Dos Console。
  • 批处理文件默认的存储格式为ANSI,即使用Windows系统默认的编码格式。
    在这里插入图片描述

2. 解释器

  • 批处理大小写不敏感。
  • 批处理解释器默认是读取一行代码,然后解释执行。
  • 批处理解释器如果读取到圆括号“(”,则认为直到下一个对应的“)”为结束。此方式可以让批处理解释器一次解释执行多条命令。
  • CTRL+C退出当前正在执行的批处理。在这里插入图片描述

3. 语法

3.1. 注释

  • 段注释,主要是利用goto来达到段注释的效果,如:
goto start     
= 可以是多行文本,可以是命令    
= 可以包含重定向符号和其他特殊字符     
= 只要不包含 :start 这一行,就都是注释    
:start
  • 行注释,推荐前面两种方式:
    在这里插入图片描述

3.2. 基础指令

  • Echo命令,用来输出后面的信息,后面的信息是字符串也可以是变量。

  • 回显,显示正在执行的代码内容。

    • 批处理代码默认是开启回显的。
    • Echo off是关闭此后代码的回显,echo on是开启此后代码的回显。
    • @是关闭此行代码的回显。如:@echo “Hello, World!”
    • @echo off是关闭此行代码及此后的回显,@echo on是开启此行及此后代码的回显。
  • Pause,暂停指定,暂停批处理解释器继续读解释执行代码。用户按任何键将继续。

  • Cls,清屏命令,清除当前控制台显示的内容。

3.3. 定义变量

  • 字符串变量

set variable-name=value

set info=Hello world.
echo %info%

注意:=左右都是字符,如果有空格,空格也属性字符串的一部分。
使用set设置的环境变量只在当前进程及其继承进程有效,并且是临时的,进程关闭重启之后失效。

  • 数字变量

set /A variable-name=value

set /A age=18
echo %age%

注意: 可进行加、减、乘、除、取余操作。 它们的符号分别是 + – * / % ,set /a 可计算的数值,
单个数值且最终运算结果只能大于或等于-2的31次方,小于2的31次方“。批处理算术只能针对整数。

set /A num=18
# 注意在文件中%要取转义字符%%,在命令行中不需要
set /A b=%num%%%20

3.4. 字符串

	set toolName=MPTool
	set ver=1.0.1
	set /A verNo=5
	rem 取消字符串变量
	set ver=
	rem 判断字符串变量是否取消
	if [%ver%]==[] echo "String ver is empty" 
	rem 字符串连接
	set mpVer=%toolName%  %ver%  %verNo%
	rem 字符串转整型
	set val=12345
	set /A numeric=%val%
	rem 替换字符串
	set text=Make America great again
	echo %text:America=China%
	
	rem 截取字符串
	set info=abcdefghijklmnopqrstuvwxyz0123456789
	echo 截取前5个字符:
	echo %info:~0,5%
	echo 截取最后5个字符:
	echo %info:~-5%
	echo 截取第一个到倒数第6个字符:
	echo %info:~0,-5%
	echo 从第4个字符开始,截取5个字符:
	echo %info:~3,5%
	echo 从倒数第14个字符开始,截取5个字符:
	echo %info:~-14,5%

3.5. 数组

批处理并不支持真正的数组,以下操作只是模拟数组、列表。

  • 定义数组
   set a[0]=3
   set a[1]=5
   set a[2]=7
  • 单个访问数组
	echo %a[0]% %a[1]% %a[2]% 
  • 遍历访问
	setlocal enabledelayedexpansion
	for /l %%n in (0,1,2) do ( 
	echo ![%%n]! ) 
  • 定义列表
	set list = 1 3 5 7 9
  • 遍历访问
	for %%a in (%list%) do ( 
	echo %%a ) 

3.6. 条件判断

  • 语法

    if condition (do some stuff)
    if condition (do some stuff) else (do other stuff)

  • 示例
	set name=tom
	if %name%==tom (echo yes) 
	set age=21
	if %age%==20 (echo yes) else (echo No)

REM 圆括号内的内容可以换行

  • 其他判断符号
    EQU – 等于
    NEQ – 不等于 
    LSS – 小于
    LEQ – 小于或等于 
    GTR – 大于  
    GEQ – 大于或等于
  • 是否定义
	if defined name (echo Yes) else (echo No)
  • 文件是否存在
	if exist C:\set2.txt echo "File exists" 
	if exist C:\set3.txt (echo "File exists") else (echo "File does not exist") 

3.7. 循环

For中的变量在文件本时,需要使用转义字符%,在控制台时不需要。

  • 遍历字符串
    在这里插入图片描述
  • 遍历文件及目录
    在这里插入图片描述
  • 遍历文本内容
    在这里插入图片描述
  • 循环
    在这里插入图片描述
  • 变量延迟
    for语句只执行后面的一句代码,如果想写多句代码,必须用()。批处理解释代码时,是先读出当前行的代码并解析,for及之后的代码也是一次加载并解释的。这就导致for之后的代码中的变量设置了并没有立即生效。如果想要立即生效,需要启用变量延迟。
    • setlocal enabledelayedexpansion启用延迟的环境变量扩展,直到出现匹配的endlocal 命令,无论 setlocal 命令之前的设置如何。
    • setlocal disabledelayedexpansion禁用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
    • 示例,求0到100之和。
      在这里插入图片描述

3.8. 输入输出

  • STDIN
    标准输入,默认为键盘输入,标号为0。在批处理中STDIN被处理成CON。
	Rem 以下语句将键盘输入输出到info.txt文件夹。
	Copy con info.txt
	REM 和上面语句等价,按CTRL+C结束输入
	Type con>info.txt
  • STDOUT
    标准输出,默认输出到命令提示符窗口,标号为1。
    在批处理中默认的输出即为STDOUT,可以省略。
	Rem 以下两句等价,将IP信息从STDOUT转到文件info.txt中。
	Ipconfig >info.txt
	Ipconfig 1>info.txt
  • STDERR
    标准错误输出,默认输出到命令提示符窗口,标号为2。
	rem 以下命令只能将net的标准输出记录在result.log文件中,出错信息则会输入到控制台
	net stop myservices >result.log
	rem 如果想把错误信息输出到文件
	net stop myservices 2>result.log
	rem 如果想把正确和错误信息都输出到文件,则需要用重定向即将2重定向到1,这样两者都输出到文件
	net stop myservices 1>>result.log 2>&1
  • nul
    很多命令执行都会输出一些信息,如pause命令。但是如果我不想显示输出的信息,可以将输入信息输出定向到nul,即相当于不用输出。
    在这里插入图片描述
  • set /p
    • 获取用户输入
      在这里插入图片描述
    • 不换行输出
      在这里插入图片描述

3.9. goto和标签

	Rem goto表示跳转到指定标签的位置 
	Goto XX 
	Rem XX标签标记位置 
	:XX
  • 用goto模拟while
	:While
	If %name% NEQ tom (
	Rem do some stuff
	Goto while
	)
  • 用goto模拟函数
	:Begin
	Set /p a=please enter:
	If %a%==2 Goto funcA
	If %a%==3 Goto FuncB
	Exit
	
	:FuncA
	Rem do some stuff
	Goto Begin:
	
	:FuncB
	Rem do some stuff
	Goto Begin:

3.10. Call子程序

  • 调用子代码
   CALL :label arguments
   :label   rem do so stuff
  • 调用批处理
 	call f:\test.bat 1 3
  • 获取参数
    call调用子程序可以带参数,参数默认以%0、%1来获取,参数可以进行扩展。
    在这里插入图片描述

3.11. 文件读写

  • 创建新文件并写入
    在这里插入图片描述
  • 追加到原文件写入
    在这里插入图片描述
  • 读文件
    在这里插入图片描述

3.12. 组合命令及管道

  • &
    Usage:第一条命令 & 第二条命令 [& 第三条命令…]
    用这种方法可以同时执行多条命令,而不管命令是否执行成功
  • &&
    Usage:第一条命令 && 第二条命令 [&& 第三条命令…]
    用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;
  • ||
    Usage:第一条命令 || 第二条命令 [|| 第三条命令…]
    用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;
  • |
    Usage:第一条命令 | 第二条命令 [| 第三条命令…]
    将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。
  • >,>>
    将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内
    容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。
  • < , >& , <&
    < 从文件中而不是从键盘中读入命令输入。
    >& 将一个句柄的输出写入到另一个句柄的输入中。
    <& 从一个句柄读取输入并将其写入到另一个句柄输出中。

3.13. 转义字符

批处理中有很多特殊的符号有特殊的用途,但是当我们想将这些特殊的符号当作原始的字符来用时,就需要特殊的处理,此时就需要转义字符^来标识。

  • 普通字符串
	:: 此时就需要转义,否则批处理执行错误
	Echo you ^& me
  • 命令字符串
	:: dir /ad /b /s “%~dp0”^|sort /r是命令字符串,所以|前必须加^转义为字符串
	for /f “delims=” %%a in (‘dir /ad /b /s "%~dp0"^|sort /r') do (
	  rd "%%a">nul 2>nul)

3.14. 退出及退出码

  • 批处理退出exit
    EXIT [/B] [exitCode]
    REM 退出当前cmd.exe,退出码为1.
    Exit /B 1
  • 批处理退出goto :EOF
    Goto :EOF退出到上一个调用,上一个调用可以是另外一个批处理中的call命令,也可以是当前批处理中的Call命令。
  • Windows中每一个进程退出都有退出码。
    Win32中有API,exit(exitCode)设置当前进程的退出码。
    Python中也能够通过os.exit(exitCode)来设置退出码。
    批处理中直接调用exe时,是阻塞的方式,等待exe结束之后,通过变量%errorlevel%获取。

3.15. 内置命令简介

  1. Cd设置当前目录
  2. Md创建文件夹
  3. Rd删除文件夹
  4. Ren重命名文件
  5. Copy拷贝文件
  6. Del删除文件
  7. Dir显示目录
  8. Move移动文件
  9. ASSOC指定或修改文件类型
  10. FTYPE显示修改文件关系类型
  11. Date/time显示当前日期和时间
  12. Attrib设置显示文件属性
  13. Choice选择判断
  14. Mode设置窗口
  15. Color设置窗口字体背景颜色
  16. title设置控制标题

3.16. 扩展模块简介

批处理的很多功能都通过扩展组件完成的,Windows的组件基本都提供了命令行操作。

  1. Find/findstr查找文本内容,支持正则表达式。
  2. Forfiles遍历文本内容,forfiles只支持ANSI格式的文本。
  3. Ipconfig获取IP相关的
  4. WMIC调用WMIC组件获取设备信息
  5. Devcon控制设备安装驱动等
  6. Xcopy拷贝文件扩展功能
  7. Format/diskpart格式化分区有关功能
  8. Schtasks定时计划功能
  9. Netstat配置网络IP协议等
  10. REG操作注册表
  11. Explorer打开文件夹
  12. Ping网络通信
  13. Shutdown关机命令
  14. Regsvr32注册反注册组件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171947.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • tomcat各版本的区别

    tomcat各版本的区别tomcat各版本的区别

  • J1939广播DM1报文

    J1939广播DM1报文一、DM1报文1,SAEJ1939-21(参考5.2)对CANID进行了重新划分,加上8个字节的数据域,构成了J1939的协议数据单元(ProtocolDataUnit,PDU)。SAEJ1939-73(参考5.7.1)中定义了DM1的优先级为6,PGN(参数组数编号)为65226(00FECA),所以源地址为0x41的DM1ID为18FECA41。2,假设源地址为0x41的节点,存在两个现行故障,故障的SPN,FMI分别为(521132,1),(521008,3),按照DTC结构

  • LINUX内核目录文件说明

    LINUX内核目录文件说明 内核空间和用户空间     在下载内核前,我们应该讨论一些重要的术语和事实。首先了解一下内核空间和用户空间    内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。   1.内核空间    Linux内核是一个宏内核,这意味着整个操作系统都运行在内核预留的内存里。内…

  • java的各种类型转换汇总

    java类型转换IntegerStringLongFloatDoubleDate 1如何将字串String转换成整数int? A.有两个方法: 1).

    2021年12月25日
  • sql中ddl和dml(sql与access的区别)

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netDDL和DML之间的主要区别在于:DDL有助于更改数据库的结构,而DML有助于管理数据库中的数据。本质区别DDL代表数据定义语言(DataDefinitionLanguage),是一种有助于创建数据库模式的SQL命令。而DML代表数据操作语言(DataManipulationLanguage),是一种有助于检索和管理关系数据库中数据的SQL命令

  • oncontextmenu 事件

    oncontextmenu 事件用户点击鼠标右键时触发并打开上下文菜单禁用:document.oncontextmenu=function(){   returnfalse;}编辑自定义右键打开菜单document.oncontextmenu=function(){   returnfalse; } document.body.addEventListener(‘mousedown’…

    2022年10月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号