BAT命令学习

cd 显示当前目录名或者改变当前目录
md 创建目录
rd 删除一个目录
dir 显示目录中的文件和子目录列表
tree 以图形显示驱动器或路径的文件夹结构
path 为可执行文件显示和设置一个搜索路径
copy 复制文件和目录树
del 删除一个或数个文件
move 移动文件并重命名文件和目录
ren 重命名文件
find 搜索字符串
fc 比较文件的不同
replace 替换
ping 进行网络连接测试、名称解析
ftp 文件传输
net 网络命令集及用户管理
telnet 远程登录
ipconfig 显示、修改TCP/IP设置
msg 给用户发送消息
arp 显示、修改局域网的IP地址-物理地址映射列表
at 安排在特定日期和时间运行命令和程序(该命令已被弃用,建议使用schtasks)
shutdown 立即或定时关机或重启
shutdown /t xxx 将关闭前的超时时间设置为xxx秒 有效范围是0-315360000(10年),默认为30
    /o 转到高级启动选项菜单并重新启动计算机,必须和/r选项一起使用
    /r 完全关闭并重启计算机
tskill 结束进程 taskkill /pid 14572
tasklist 显示进程列表
reg 注册表控制台工具
powercfg 控制系统上的电源设置
copy con {filename 创建的文件名}
echo {on|off} "打印的信息"    开启或关闭批处理源码显示
type {filename 文本文件路径}
@{command 命令}    批处理某一行命令不显示
pause 程序暂停,由用户决定是否继续
call {filename.bat 批处理文件路径}    调用批处理文件以及调用当前批处理文件的标号命令
call {:lablename}
rem {massage}    打开回显echo时显示指令        注释
::{message} 打开回显仍然不显示指令
set {enviroment_varible=value 设置环境变量}    环境变量的设置和使用
%enviroment_varible% 环境变量的使用
goto {:lable 程序指针跳转到指定的标签,从标签后的第一条命令开始继续执行批处理程序。}
start 打开一个窗口,调用另一个程序
{/MIN 开始时窗口最小化}
{/SEPARATE 在分开的空间内开始16位windows程序}
{/HIGH 在HIGH优先级类别开始应用程序}
{/REALTIME在RELATIME优先级类别开始应用程序}
{/WAIT 启动应用程序等候它结束}
{/parameters 这些为传输到命令/程序的参数}
filename
{content} {>覆盖|>>追加} {filename 文件路径,将内容覆盖或追加进文件}
set {varible}=<{filename文件路径,将文件内容赋值给变量}
command_1|command_2 将管道前面命令的输出结果重定向输出到管道符合后面的命令中去
^ 转义符 将特殊字符转换为一般符合,即剥离特殊符合的特殊地位
特殊符合指:| & > <
比如,如果我们想输出符合">;",直接用echo > 是不行的,必须修改为 echo ^>;
逻辑命令符
逻辑命令符包括:&;、&&;、||
&-它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败
&&-当&&前面的命令成功执行时,执行&&后面的命令,否则不执行
||-当||前面的命令失败时,执行||后面的命令,否则不执行

字符串比较
if 语句仅能够对两个字符串是否相同、先后顺序进行判断等,其命令格式为:
if [not] string1 compare-op string2 command1 [else command2]
其中,比较操作符compare-op有以下几类
== - 等于
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
选择开关/i则不区分字符串大小写;选择not项,则对判断结果进行逻辑非
if defined {variblename}    判断变量是否存在
%errorlevel% 判断指令是否成功执行
for语句(循环结构)
for语句可以实现类似C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同的开关
将会实现不同的功能。其中,%%variable是批量处理程序里面的书写格式,在DOS中书写为%variable
1、无开关
无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。其命令格式为:
for %%variable IN (set) DO command
2、开关/L
含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:
for /L %%variable IN (start,step,end) DO command
其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数
for /L %%i in (1,2,10) do md %%i
3、开关/F
含开关/F的for语句具有强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII码文件,比如txt文档,其命令格式为:
for /F ["options"] %%variable IN (set) DO command
其中,set为("string"、'command'、file-set)中的一个;options是(eol=c、skip=n、delims=xxx、token=x,y,m-n、usebackq)中的一个或者多个组合。
各选项的意义参考for /f。一般情况下,使用较多的是skip、tokens、delims三个选项。只要添加了/F开关系统就将delims的值默认为空格


setlocl 变量延迟
在没开启变量延迟的情况下,某条命令行中的变量改变,必须到下一条命令才能体现。
另外例如for命令等,其后用一对圆括号闭合所有语句也当作一行
为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前
再进行赋值,也就是说"延迟"对变量的赋值
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
使用了变量延迟 变量的值在运行过程中才会变化


for循环
在cmd窗口中:
for %variable IN (set) DO command [command-parameters]
在批处理文件中
for %%variable IN (set) DO command [command-parameters]
具体例子
for %i in (1 2 3) do @echo %i
for %%i in (1 2 3) do @echo %%i

在cmd窗口中,for之后的形式变量I必须使用单百分号引用,即%i,而在批处理文件中,引用形式变量I必须使用双百分号,即%%i
for语句的基本要素:
1、for、in和do是for语句的关键字,它们三个缺一不可
2、%%I是for语句中对形式变量的引用,就算它在do后的语句中没有参与语句的执行,也是必须出现的;
3、in之后,do之前的括号不能省略
4、command1表示字符串或变量,command2表示字符串、变量或命令语句

1、for语句的形式变量I,可以换成26个字母中的任意一个,这些字母区分大小写,也就是说,%%I和%%i会被认为不是同一个变量;形式变量I还可以换成其他的字符,但是,为了不与批处理
中的%0~%9这10个形式变量发生冲突,请不要随意把%%I替换为%%0~%%9中的任意一个。
2、in和do之间的command1表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称为一个元素,每个元素之间,用空格、跳格键、逗号、分号或等号分隔
3、for语句依次提取command1中的每一个元素,把它的值赋予形式变量I,带到do后的command2中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否
被带到command2中参与了command2的运行;当执行完一次do后的语句之后,再提取command1中的一个元素,再执行一次command2,如此循环,直到command1中的所有元素都已经被提取完毕,该for语句才宣告执行结束

@echo off
set str=c d e f g i j k l m n o p q r s t u v w x y z
echo 当前硬盘的分区有:
for %%i in (%str%) do if if exist %%i: echo %%i:
pause

列出当前目录下所有的文本文件
@echo off
for %%i in (*.txt) do echo "%%i"
pause

列出只用两个字符作为文件名的文本
@echo off
for %%i in (??.txt) do echo "%%i"
pause

@echo off
attrib +s 1.txt        +s显示  +h隐藏
for %%i in (*,txt) do echo %%i
pause

for /f 用法详解
1、为解析文本而生:for /f 的基本用法
提取文本信息,则是for /f的拿手好戏;读取文件内容;提取某几行字符;截取某个字符片段;对提取到的内容再切分、打乱、
for /f都会想法设法帮你办到,因为,for /f就是被设计成专门用于解析的文本的。

@echo off
for /f %%i in (test.txt) do echo %%i
pause

@echo off
for /f %%i in (test.txt) do echo %%i & pause
pause

2、切分字符串的利器:delims=
@echo off
for /f "delims=, " %%i in (test.txt) do echo %%i
pause

3、定点提取:tokens=
tokens=后面一般跟的是数字,如tokens=2,也可以跟多个,但每个数字之间用逗号分开,如tokens=3,5,8,它们的含义分别是:
提取第2字节字符串、提取第3、第5和第8字节字符串。这里的"节"是由delims=这一开关划分的,其他内容并不是一成不变的
@echo off
for /f "delims=, tokens=2,5" %%i in (test.txt) do echo %%i %%j
pause

4、跳过无关内容,直奔主题:skip=n
很多时候,有用的信息并不是贯穿文本内容的始终,而是位于第N行之后的行内,为了提高文本处理的效率,或者不受多余信息的干扰,for /f允许你跳过这些无用的行,
直接从第N+1行开始处理,这个时候,就需要使用skip=n,其中,n是一个正整数,表示要跳过的行数。
@echo off
for /f "skip=2" %%i in (test.txt) do echo %%i
pause

5、忽略以指定字符打头的行:eol=
eol=c ---指一个行注释字符的结尾(就一个)

翻箱倒柜遍历文件夹:for /r
1、for /r 的作用及用法
按照帮助信息里的说法,for /r的作用是"递归",遍历文件夹,它会遍历指定目录和子目录下的所有文件和文件夹
for /r 目录 %%i in (元素集合) do 命令语句集合

@echo off
for /r d:\test %%i in (.) do echo %%i
pause

1、for /r列举出来的路径最后都带有斜杠和点号,而dir语句则没有,会对获取到的路径进一步加工产生影响;
2、for /r不能列举隐藏属性的目录,而dir语句则可以通过指定/a后面紧跟的参数来获取带指定属性的目录,更加灵活;
3、若要对获取到的路径进行进一步处理,则需要把dir语句放入for /f语句中进行分析,写成for /f %%i in ('dir /ad /b /s')do...形式;
由于for /r语句是边列举路径边进行处理,所以,在处理大量路径的时候,前期不会感到有停顿,而for /f语句则需要等到dir /ad /b /s语句把
所有的路径列举完之后,再读入内存进行处理;所以,在处理大量路径的时候,前期会感到明显的停顿。

1、使用if命令判断文件是否存在
判断文件夹的时候在最后加上反斜杠
@echo off
if exist "C:\Program Files\"(
echo 文件夹存在
)else (
echo 文件夹不存在
)
pause
判断文件的时候先排除文件夹
if not 表示条件不成立的情况下执行命令
@echo off
if not exist "1.txt\"(
if exist "1.txt"(
echo 文件存在
)else (
echo 文件不存在
)
)
pause

2、使用if命令进行字符串比较
使用==判断两个字符串或数字是否相等
if 1==1 echo yes
if "a" == "a" echo yes

3、if命令变量延迟扩展
@echo off
setlocal enabledelayedexpansion
set VAR=before
if "%VAR%" == "before"(
set VAR=after
if "!VAR!" == "after" (
echo 赋值成功
) else (
echo 赋值失败
)
)
pause

@echo off
setlocal enabledelayedexpansion
for %%i in ("C:\Windows\*.exe") do (
set list=!list! %%i
)
echo %list%
pause

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值