写点什么

从零开始带你打开批处理大门

用户头像
xiezhr
关注
发布于: 2021 年 04 月 11 日
从零开始带你打开批处理大门

大家好,我是 xiezhr。

1 前言

打上一篇文章,一看是 2021 年 3 月 20 号更新的,又拖更了。


一个原因是,最近工作上真的挺忙的,有比较着急需要加班加点赶的需求。好在清明前算是把比较着急的改好了。本来安排清明也是要加班的,但是真的加不动了。(连着加班真的挺影响效率的,适当休息是非常有必要的~)


以至于一周都是在连轴转,需求改好更新之后也是心惊胆战的,生怕哪个地方出现问题,大脑一度都处于紧绷状态。


其次呢写一篇文章还是挺费时费力的,又不想草率的更新一篇上去,这样还不如不写。这次呢就来填下上次留下的坑,大家可以放心食用 O(∩_∩)O 哈哈~

2 批处理简介

  • 批处理(Batch),也称为批处理脚本,扩展名为.bat 或者.cmd。

  • 类似于 linux 或 Unix 中的 shell 脚本。

  • 包含一系列 DOS 命令,通常用于自动执行重复性任务。只需我们双击批处理文件便可执行任务,而无需重复输入相同指令。

  • 批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效,熟练使用可以简化很多重复工作,提高工作效率。

3 批处理文件创建

  • 用记事本或者各种文本编辑器创建一个后缀为.bat 的文件即可

  • 一般情况下每行一条命令,方便阅读方便书写。当然也可以用(&、&&、|、||)分割书写到一行,但不建议这样

  • 当像遇到像编程语言那样 if、for 等命令时候,系统会扫描整个批处理,然后从第一行开始顺序向下逐句执行,直到程序结尾或者遇到 exit 或意外退出


废话不多说,直接上一个例子,感受下批处理的魅力 O(∩_∩)O 哈哈~


下面是一个以批处理创建的计算器小例子,打开 xiezhr.bat 后效果如下





4 批处理常用符号

4.1 @

回显屏蔽


① 语法


@ 
复制代码


② 举例


rem 从本行开始关闭回显。一般批处理第一行都是这个@echo off  
复制代码

4.2 重定向 1 >与>>

输出重定向命令 >清除文件中原有的内容后再写入 >>追加内容到文件末尾,而不会清除原有的内容。


主要将本来显示在屏幕上的内容输出到指定文件中,指定文件如果不存在,则自动生成该文件


① 语法


[p读取数据的位置] > [写入数据的位置]
[p读取数据的位置] >> [写入数据的位置]
复制代码


② 举例


rem 将dir输出stdin重定向到文件Dirlist.txt,> 每次文件都会被重新创建,>> 则是文件追加dir 1 > dirlist.txtdir > dirlist.txt
dir 1>> dirlist.txtdir >> dirlist.txt
rem 将打印信息重定向到文件,使用>每次文件会被重新创建,>> 则是文件追加echo abc>log.txtecho abc>>log.txt
rem 将所有的IP信息存入文件,使用>每次文件会被重新创建,>> 则是文件追加ipconfig>log.txtipconfig>>log.txt
rem 阻止输出显示,将默认输出位置(句柄)重定向为nul 使用>每次文件会被重新创建,>> 则是文件追加echo invalie prompt >nulecho invalie prompt 1>>nul
复制代码

4.3 重定向 2 <

要从键盘或设备重定向命令输入


① 语法


[相应处理] < [读取数据的位置]
复制代码


② 举例


rem 重定向输入是来自文件,并将输入的文件内容按首字母排序sort<xiezhr.txt 
rem 将从stdin输入重定向为从文件输入,只输入文件首行内容,stdin(0)是默认输入,可以省略set /p var=0<xiezhr.txtset /p var=<xiezhr.txtecho %var%
复制代码

4.4 管道符号 |

传递作用,将前面一条命令的执行结果传递给后面一条命令继续执行


① 语法


[]|[]
复制代码


② 举例


rem 将dir的输出作为sort的输入dir | sort
rem 查找当前目录中包含".txt"的文件名dir | find ".txt"
复制代码

4.5 转义符 ^

用在特殊符号之前,取消特殊字符的作用


① 语法


^ [特殊字符]
复制代码


② 举例


rem &将作为字符输出echo 非常^&批处理 
复制代码

4.6 逻辑命令符 &、&&、||

& 无论前面的命令是否成功执行 都执行后面的

&& 当前面的命令成功执行 再执行后面的命令 相当于逻辑与运算|| 当前面的命令没有成功执行 则执行后面的命令 可以作判断选择用 相当于逻辑或运算


① 语法


[命令1]&[命令2][命令1]&&[命令2][命令1]||[命令2]
复制代码


② 举例


rem & rem 虽然没有成功到“个人博客” 但还是会执行echo 命令,输出“字符中含有xiezhr”echo xiezhrspace.cn | find "个人博客" & echo 字符中含有xiezhr

rem && rem 没有成功到“个人博客” ,所以echo命令不会成功执行echo xiezhrspace.cn | find "个人博客" && echo 字符中含有xiezhr
rem || rem 在xiezhrspace.cn中查找字符"个人博客",如果没有找到则继续执行后面的命令,即在屏幕中显示"字符中没有xiezhr",如果找到了,也就是如果前面是xiezhrspace.cn的话则停止继续执行||后面的命令,而是在屏幕中直接显示"xiezhrspace.cn".echo xiezhrspace.cn | find "个人博客" || echo 字符中没有xiezhrecho xiezhrspace.cn | find "xiezhr" || echo 字符中含有xiezhr
复制代码

5 常用批处理

注意:在 cmd 中输入命令+/?即可查看该命令的帮助信息。如 cd /?

5.1 文件夹管理

5.1.1 cd

显示当前目录名或改变当前目录


① 语法


cd   rem 显示当前路径cd   rem 进入根目录cd /d d:sdk   rem 变更盘符目录
复制代码


② 举例


rem 进入根目录C:\Users\xiezhr>cdC:\Users\xiezhr
rem 显示当前目录D:\>cdD:\
rem 切换到F:\xiezhrspace\hexo-xiezhrblog 目录C:\Users\ye.ff>cd F:\xiezhrspace\hexo-xiezhrblogF:\xiezhrspace\hexo-xiezhrblog>
复制代码

5.1.2 md

创建目录


①语法


MKDIR [drive:]pathMD [drive:]path
复制代码


②举例


rem 在D盘下创建xiezhr目录md d:xiezhr
复制代码

5.1.3 rd

删除一个目录


①语法


rd [directoryname]
复制代码


② 举例


rem 删除d盘xiezhr目录rd d:xiezhr
复制代码

5.1.4 dir

显示目录中的文件和子目录列表


① 语法


DIR [drive:][path][filename]         指定要列出的驱动器、目录和/或文件。
复制代码


②举例


dir rem 显示当前目录中的文件和子目录dir /a  rem 显示当前目录中的文件和子目录,包括隐藏文件和系统文件dir c: /a:d rem 显示 C 盘当前目录中的目录dir c: /a:-d rem 显示 C 盘根目录中的文件dir c: /b/p rem /b只显示文件名,/p分页显示dir *.exe /s rem 显示当前目录和子目录里所有的.exe文件
复制代码

5.1.5 tree

以图形显示驱动器或路径的文件夹结构


① 语法


TREE [drive:][path] [/F] [/A]
/F 显示每个文件夹中文件的名称。 /A 使用 ASCII 字符,而不使用扩展字符。
复制代码


② 举例


rem 显示D盘的文件目录结构tree d: 
复制代码

5.1.6 path

为可执行文件显示或设置一个搜索路径


① 语法


PATH [[drive:]path[;...][;%PATH%]PATH ;
键入 PATH 但不加参数,显示当前路径。将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置
复制代码


② 举例


::设置要永久加入到path环境变量中的路径@echo offset My_PATH=D:\AppFolder  set PATH=%PATH%;%My_PATH%reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /fexit
::设置要临时加入到path环境变量中的路径@echo offset My_PATH=D:\AppFolderset PATH=%PATH%;%My_PATH%pause
复制代码

5.1.7 xcopy

复制文件和目录树


① 语法


XCOPY source [destination][参数]
复制代码


② 举例


rem 复制 d:xiezhr 文件夹、所有子文件夹和文件到 e: ,覆盖已有文件rem 加 /i 表示如果 e: 没有 xiezhr 文件夹就自动新建一个,否则会有询问xcopy d:xiezhr e:xiezhr /s/e/i/y
复制代码

5.2 文件管理

5.2.1 type

显示文本文件的内容


① 语法


TYPE [drive:][path]filename
复制代码


② 举例


rem 显示指定文件的内容(下面是显示d盘目录下xiezhr.txt文件的内容)type d:xiezhr.txt
C:\Users\xiezhr>type d:xiezhr.txtxiezhr的个人公众号:xiezhrspac
rem 显示当前目录里所有.txt文件的内容type *.txt
复制代码

5.2.2 copy

将一份或多份文件复制到另一个位置


① 语法


COPY [source] [destination]
复制代码


② 举例


rem 复制 c:test.txt 文件到 d: ,并重命名为 test.bakcopy c:xiezhr.txt d:xiezhr.bak
rem 从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件rem con代表屏幕,prn代表打印机,nul代表空设备copy con xiezhr.txt
rem 合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件 如果不指定 3.txt ,则保存到 1.txtcopy 1.txt + 2.txt 3.txt
rem 复制文件到自己,实际上是修改了文件日期copy test.txt +
复制代码

5.2.3 del

删除一个或数个文件


① 语法


del [filename] filename         指定一个或多个文件或者目录列表。                通配符可用来删除多个文件。                如果指定了一个目录,该目录中的所                有文件都会被删除。
复制代码


② 举例


rem 删除指定文件,不能是隐藏、系统、只读文件del d:xiezhr.txt 
rem 删除 d:xiezhr 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f d:xiezhr*.*
rem 删除 d:xiezhr 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录del /q/a/f/s d:xiezhr*.*
复制代码

5.2.4 move

移动文件并重命名文件和目录


①语法


move [source] [destination]
复制代码


② 举例


rem 将D盘xiezhr.txt 移动到f盘move xiezhr.txt f:
rem 将xiezhr.txt重命名为xiezhrspace.txtmove xiezhr.txt xiezhrspace.txt
复制代码

5.2.5 ren

重命名文件名


①语法


REN [drive:][path]filename1 filename2.
复制代码


②举例


rem 将xiezhr文件夹重命名为xiezhrspaceren d:xiezhr xiezhrspace
复制代码

5.2.6 replace

替换文件


① 语法


REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
[drive1:][path1]filename 指定源文件。 [drive2:][path2] 指定要替换文件的目录
复制代码


②举例


rem 添加新文件到目标目录: 将 xiezhr.bat 文件添加到 E 盘目录下replace /A C:\xiezhr.bat E:\ 
rem 提示替换文件到目标目录: 将 xiezhr.txt 文本文件替换到 temp 目录中去,( temp 目录必须有 xiezhr.txt 文本文件)replace /P C:\xiezhr.txt E:\temp
复制代码

5.2.7 attrib

显示或更改文件属性


① 语法


ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]       [drive:][path][filename] [/S [/D] [/L]]
+ 设置属性。 - 清除属性。 R 只读文件属性。 A 存档文件属性。 S 系统文件属性。 H 隐藏文件属性。 I 无内容索引文件属性。 X 无清理文件属性。 V 完整性属性。 [drive:][path][filename] 指定 attrib 要处理的文件。 /S 处理当前文件夹 及其所有子文件夹中的匹配文件。 /D 也处理文件夹。 /L 处理符号链接和 符号链接目标的属性
复制代码


② 举例


rem 查看d盘xiezhr目录下各个文件属性D:\xiezhr>attrib /sA            D:\xiezhr\logo.pngA            D:\xiezhr\公众号-xiezhrspace.txt
rem 设置logo.png文件的属性为系统实现、隐藏属性、只读属性D:\xiezhr>attrib +s +h +r logo.pngD:\xiezhr>attrib /sA SHR D:\xiezhr\logo.pngA D:\xiezhr\公众号-xiezhrspace.txt
rem 设置logo.png 恢复原来属性D:\xiezhr>attrib -s -h -r logo.png
D:\xiezhr>attrib /sA D:\xiezhr\logo.pngA D:\xiezhr\公众号-xiezhrspace.txtrem
复制代码

5.2.7 find

① 语法


FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集的文件。 "string" 指定要搜索的文本字符串。 [drive:][path]filename 指定要搜索的文件
复制代码


② 举例


rem 在 d:/xiezhr/xiezhr.txt 文件里查找含 "公众号:xiezhrspace" 字符串的行如果找不到,将设 errorlevel 返回码为1C:\Users\xiezhr>find "公众号:xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT公众号:xiezhrspace
rem 查找含 xiezhrspace 的行,忽略大小写C:\Users\xiezhr>find /i "xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT博客:www.xiezhrspace.cn公众号:xiezhrspace更多实用的文章和资源尽在公众号:XiezhrSpace,欢迎订

rem 显示含 xiezhrspace 的行的行数C:\Users\ye.ff>find /c "xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT: 2
复制代码

5.2.8 fc

比较两个文件或两个文件集并显示它们之间的不同


① 语法


FC /B [drive1:][path1]filename1 [drive2:][path2]filename2[drive1:][path1]filename1             指定要比较的第一个文件或第一个文件集。[drive2:][path2]filename2             指定要比较的第二个文件或第二个文件集。
复制代码


② 举例


rem 比较d盘xiezhr目录下的“公众号-xiezhrspace.txt” 和“xiezhr.txt”文件 。如下为比较结果D:\xiezhr>fc xiezhr.txt 公众号-xiezhrspace.txt正在比较文件 xiezhr.txt 和 公众号-XIEZHRSPACE.TXT***** xiezhr.txt

微信号:xie_zhr
博客:www.xiezhrspace.cn
公众号:xiezhrspace
***** 公众号-XIEZHRSPACE.TXT公众号:xiezhrspace*****
复制代码

5.3 网络命令

5.3.1 ping

确定本地主机是否能与另一台主机交换数据报


① 语法


ping+IP地址或主机域名ping+IP地址或主机域名+命令参数ping+命令参数+IP地址或主机域名
复制代码


② 举例


rem 本机与192.168.205.9是否连通ping 192.168.205.9
rem 网络是否畅通ping www.baidu.com
复制代码

5.3.2 ftp

将文件传送到运行 FTP 服务器服务(经常称为后台程序)的计算机以及将文件从该计算机传出。可以交互使用 Ftp。


① 语法


ftp -v -d -i -n -g [主机名] -v 显示远程服务器的所有响应信息;-n 限制ftp的自动登录,即不使用;.n etrc文件;-d 使用调试方式;-g 取消全局文件名
复制代码


② 举例


rem 将D盘xiezhr.txt文件上传到ftp 文件服务器rem ftp服务器信息:ip:192.168.205.9 账号:xiezhr 密码:pswxiezhr
@Echo OffEcho open 192.168.205.9 > ftp .upEcho xiezhr >> ftp .upEcho pswxiezhr >> ftp .upEcho Cd .\User >> ftp .upEcho binary>> ftp .upEcho put "D:xiezhr.txt" >> ftp .upEcho bye>> ftp .upFTP -s: ftp .updel ftp .up /qPause
复制代码

5.3.3 net

网络命令集及用户管理,根据使用的命令提供各种网络服务


① 语法


net [variant]  
复制代码


② 举例


rem 查看计算机的当前密码和登录限制。net accounts
添加或删除附加到Windows域控制器的计算机。net computer
rem 显示当前的服务器或工作组设置。net config
rem 该命令可以用于查看特定用户帐户的详细信息。net user
rem 该命令用于停止和启动特定的服务。net stop/start
rem 显示工作站或服务器的网络统计信息。net statistics
rem 连接或断开计算机与共享资源或显示有关连接的信息net use
复制代码

5.3.4 telnet

查看某个端口是否可访问。我们在搞开发的时候,经常要用的端口就是 8080。那么你可以启动服务器,用 telnet 去查看这个端口是否可用。


① 语法


telnet IP 端口telnet 域名 端口
复制代码


② 举例


rem 查看主机192.168.205.9 的8080端口是否可以访问telnet 192.168.205.9 8080 
复制代码

5.3.5 ipconfig

显示、修改 TCP/IP 设置


① 语法


ipconfig
复制代码


② 举例


rem 查看本机IP地址ipconfig 无线局域网适配器 WLAN:连接特定的 DNS 后缀 . . . . . . . :IPv6 地址 . . . . . . . . . . . . : 2409:8a6c:72:41c0:5424:dc10:aa75:2782临时 IPv6 地址. . . . . . . . . . : 2409:8a6c:72:41c0:1df7:d511:b10e:72c本地链接 IPv6 地址. . . . . . . . : fe80::5424:dc10:aa75:2782%11IPv4 地址 . . . . . . . . . . . . : 192.168.1.80子网掩码  . . . . . . . . . . . . : 255.255.255.0默认网关. . . . . . . . . . . . . : fe80::1%11                                    192.168.1.1
复制代码

5.3.5 msg

给用户发送消息


① 语法


MSG {username | sessionname | sessionid | @filename | *}    [/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
username 标识指定的用户名。 sessionname 会话名。 sessionid 会话 ID。 @filename 识别这样一个文件,该文件含有将所发消息发送到的用户 名、会话名和会话标识号的列表。 * 给指定服务器上的所有会话发送信息。 /SERVER:servername 要联系的服务器(默认值是当前值)。 /TIME:seconds 等待接收器确认消息的时间延迟。 /V 显示有关执行的操作的信息。 /W 等待用户的响应,跟 /V 一起有用。 message 要发送的消息。如果没有指定,发出提示,或者从 stdin 读取。
复制代码


② 举例


  MSG /server:192.168.1.200 * "Hello"      ----------------->>>>>    运行成功,弹出消息对话框。
复制代码

5.4 系统管理

5.4.1 shutdown

关闭计算机,或者注销当前用户


① 语法


Shutdown
复制代码


②举例


rem 如果执行批处理文件的用户具有相关权限,则计算机将被关闭。          @echo off shutdown
复制代码

5.4.2 Tasklist

列出任务,包括任务名称和进程 ID(PID)


① 语法


Tasklist
复制代码


② 举例


rem 列出当前系统上的所有任务@echo off Tasklist
复制代码

5.4.3 Taskkill

于结束一个或多个任务。


① 语法


taskkill /im [taskname]
复制代码


② 举例


rem 将发送一个终止消息到MS Paint的任何打开的程序@echo off Taskkill /im mspaint.exe
复制代码

5.4.4 reg

注册表是 Windows 系统的关键要素之一。 它包含有关操作系统各个方面的大量信息。 几乎所有安装在 Windows 系统上的应用程序都以某种形式与注册表交互注册表包含两个基本元素:键和值


① 语法


rem 1 从注册表中检索任何键的值。REG QUERY [ROOT\]RegKey /v ValueName [/s] REG QUERY [ROOT\]RegKey /ve --This returns the (default) value
rem 2 向注册表添加值,需要在系统上拥有足够的权限才能执行此操作REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]REG ADD [ROOT\]RegKey /ve [/d Data] [/f]
rem 3 从注册表中删除值,需要在系统上拥有足够的权限来执行此操作。REG DELETE [ROOT\]RegKey /v ValueName [/f] REG DELETE [ROOT\]RegKey /ve [/f] REG DELETE [ROOT\]RegKey /va [/f]
rem 4 从注册表复制值,您需要在系统上拥有足够的权限才能在源位置和目标位置上执行此操作。REG COPY [\\SourceMachine\][ROOT\]RegKey [\\DestMachine\][ROOT\]RegKey
rem 5 比较注册表项REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/v ValueName] [Output] [/s]REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/ve] [Output] [/s]
复制代码


② 举例


rem 1 查询注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ 下的所有键及其各自的值@echo off REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\
rem 2 在注册表 - HKEY_CURRENT_USER\Console 下添加一个键 键的名字是Test 分配给这个键的值是Test Data,它是默认的字符串类型@echo off REG ADD HKEY_CURRENT_USER\Console /v Xiezhr /d "xiezhr"
rem 3 删除注册表HKEY_CURRENT_USER\Console下的一个注册表项。 键的名称是Test@echo offREG DELETE HKEY_CURRENT_USER\Console /v Xiezhr /f
rem 4 将内容从位置HKEY_CURRENT_USER\Console复制到同一台机器上的HKEY_CURRENT_USER\Console\Xiezhr位置@echo off REG COPY HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Xiezhr
rem 5 比较注册表项HKEY_CURRENT_USER\Console & HKEY_CURRENT_USER\Console\Xiezhr之间的所有值@echo offREG COMPARE HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Xiezhr
复制代码

6 Batch 常用命令

6.1 echo

打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。① 语法


echo [{on|off}] [message]
复制代码


② 例子


rem 关闭单行回显@  
rem 从下一行开始关闭回显echo off
rem 从本行开始关闭回显。一般批处理第一行都是这个@echo off
rem 从下一行开始打开回显echo on
rem 显示当前是 echo off 状态还是 echo on 状态echo
rem 输出一个”回车换行”,空白行echo.
rem 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定的文件中 命令会创建一个名为"test"的文本文件,并将"test"输入到文本文件中。echo test>test.txt
复制代码

6.2 rem 和 ::

注释命令,类似于在编程语言中的/--------/,它并不会被执行,只是起一个注释的作用,只有在编辑批处理时才会被看到,主要用于方便修改


① 语法


Rem [注释内容]
复制代码


② 例子


Rem 此处是注释内容。
复制代码

6.3 pause

暂停命令。运行 Pause 命令时,将显示下面的消息:Press any key to continue. . .(或:请按任意键继续. . .)


① 语法


pause
复制代码


② 例子


C:\Users\xiezhr>pause请按任意键继续. . .
复制代码

6.4 call

从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。还可以调用指定标号处后面的所有命令


① 语法


call [drive:][path]filename [batch-parameters]
[drive:][path]filename:指定被调用的批处理文件名,当被调用的批处理文件与正在执行的批处理文件处于同一目录下时,可以省调盘符及路径
复制代码


②举例在 D 盘先分别建立 test.bat 和 called.bat 批处理文件 test.bat


@echo offecho 正在调用called.batcall called.batecho called.bat 调用完毕
复制代码


called.bat


@echo off@echo 已经进入到called.bat 中。。。
复制代码


test.bat 和 called.bat 创建完毕后,执行 test.bat,当 test.bat 执行到 call called.bat 命令时便转向执行 called.bat 批处理文件中的内容。called.bat 执行完之后继续执行 test.bat call called.bat 命令行后面的内容

6.5 start

调用外部程序,所有的 DOS 命令和命令行程序都可以由 start 命令来调用


①语法


START “programname”              
复制代码


② 举例


rem 修改 DOS 窗口标题start title "新标题"
rem 打开计算机 E 盘start E:
rem 最小化打开记事本start /min notepad.exe
rem 最大化打开计算器start /max calc
rem 打开任务管理器start taskmgr
rem 同时打开写字板和计算器 用 & 将两个要开启的程序连起来start write & calc
复制代码

6.6 cls

清屏


① 语法


cls
复制代码


② 举例


@echo off dircls
复制代码

6.7 title

设置控制台窗口中显示的标题。在实际工作中,我们会在一台服务器上启动很多服务,这时我们通过给不同的服务起不同的名字就很容易辨认出不同服务


① 语法


TITLE [Tilename]其中,tilename是要提供给命令提示符窗口标题的新名称
复制代码


② 举例


rem 将把窗口的标题改为“xiezhr的新窗口“。@echo off Title “xiezhr的新窗口”
复制代码

6.8 ver

显示系统版本


① 语法


ver
复制代码


② 举例


rem 下面命令将显示系统版本@echo off ver
复制代码

6.9 date

用于获取当前系统时间。


① 语法


date
复制代码


② 举例


rem 显示当前日期@echo off echo %DATE%
复制代码

6.10 time

用于设置或显示时间


① 语法


time 
复制代码


② 举例


rem 显示系统当前时间@echo off echo %TIME%
复制代码

6.11 exit

用于退出 DOS 控制台


① 语法


exit
复制代码


② 举例


rem 退出doc控制台exit
复制代码

6.12 set

设置变量。引用变量可在变量名前后加 % ,即 %变量名 %


① 语法


set
复制代码


② 举例


rem 显示当前系统上的环境变量列表@echo off set
rem 进行四则运算@echo offset /a a=1+1,b=2+1,c=3+1echo %a% %b% %c%
复制代码

6.13 if

判断语句,如果满足条件则执行条件后语句


① 语法


rem 1 if语句if (condition) do_something
rem 2 if/else 语句if (condition) (do_something) ELSE (do_something_else)
复制代码


if 语句



if/else 语句



② 举例


rem  如果d盘存在xiezhr.bat 则输出“存在d:xiezhr.bat文件”if exist d:xiezhr.bat echo 存在d:xiezhr.bat文件
rem 如果d盘不存在xiezhr 文件夹则输出“不存在d:xiezhr文件夹”if not exist d:xiezhr (echo 不存在d:xiezhr文件夹)
rem 每个“if else”代码放在括号()中。 如果括号不是用于分隔"if"和"else"代码的代码,那么如果else语句不成立,那么这些语句就不会有效。rem 在第一个“if else”语句中,if条件将评估为true。rem 在第二个“if else”语句中,else条件将被执行,因为条件将被评估为false
@echo off SET /A a=15 SET /A b=20SET /A c=%a% + %b% if %c%==35 (echo "最后结果为 35") else (echo "为知结果") if %c%==45 (echo "最后结果为 45") else (echo "为知结果")
复制代码

6.13 for

循环命令。对一组文件中的每一个文件执行某个特定命 具体参照 for /? 查看


① 语法


FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关
复制代码


② 举例


rem 依次调用小括号里的每个字符串,执行 do 后面的命令for %%i in (c: d: e: f:) do echo %%i
rem 把 d:xiezhr 及其子目录里的mp4文件的文件名都存到 d:xiezhr.txt 里去for /r d:xiezhr %%i in (*.mp4) do echo %%i>>d:xiezhr.txt
rem 对当前目录里所有的txt文件执行 find 命令,找出包含“xiezhr” 字符的所有文件for %%i in (*.txt) do find "xiezhr" %%i
rem 在当前目录和子目录里所有的.txt文件中搜索包含“xiezhr”字符串的行for /r . %%i in (*.txt) do find "xiezhr" %%i
复制代码

7 批处理使用中一些常见问题

7.1 双击打开批出里文件 xiezhr.bat 后闪退

可能原因


  • 执行速度很快,执行完之后,自行关闭

  • 语法错误


解决办法


  • 在最后面一行加上 pause


@echo offset p=xiezhrif %p%==xiezhr (echo %p%set p=xiezrhspaceecho %p%)pause
复制代码



  • 用文本编辑器打开 xiezhr.bat 文件,检查命令是否都书写正确

7.2 批处理 xiezhr.bat 文件中输出中文乱码

原因


  • 记事本新建的文件,编码不是 utf-8


解决办法


  • 用【记事本】打开>【另存为】>【修改编码为:utf-8】

发布于: 2021 年 04 月 11 日阅读数: 115
用户头像

xiezhr

关注

把分享变成一种习惯,再小的帆也能远航 2021.03.01 加入

还未添加个人简介

评论 (3 条评论)

发布
用户头像
如果有遗漏的,欢迎大家来补充~
2021 年 04 月 18 日 12:06
回复
用户头像
👍🏻👍🏻
2021 年 04 月 14 日 23:13
回复
好 好的 ok 可以 行
2021 年 04 月 18 日 12:05
回复
没有更多了
从零开始带你打开批处理大门