通过windows的cmd执行的批处理,扩展名可以是.bat或.cmd(类似linux的shell脚本)
所有语句符号不区分大小写
帮助提示信息:命令 /?
(1) 注释:rem 注释文本不执行
(2) 关闭盘符输出:@echo off // 不输出 默认的【c:/xxx/xx>】信息
(3) 输入信息:set /p 变量名=[提示信息]
(4) 输出信息:echo 文本信息或变量 // echo原样输出文本包括双引号,或%包裹的变量
(5) 结束符:pause[>nul] // 不写pause程序结束会直接关闭窗口,不加>nul最后会输出【请按任意键继续】
变量不区分类型,没有数值型字符型区分。
(1) 定义变量:set 变量名=值 //变量名不存在则为定义值。变量名=值,不能有空格
(2) 修改变量:set 变量名=值 //变量名存在则为修改值。变量名=值,不能有空格
(3) 删除变量:set 变量名= //不给任何值则为删除,
(4) 使用变量:%变量名%
(5) 查看变量:set // 查看变量列表
加减乘除余(+-*/%)
(1) 加算:set /a 变量=值+值
(2) 减算:set /a 变量=值-值
(3) 乘算:set /a 变量=值*值
(4) 除算:set /a 变量=值/值
(5) 余算:set /a 变量=值%%值 // 余算%需要写2个做转义处理
注释:算术表达式遵循先乘除后加减原则,可以加小括号进行优先计算
=,+=,-=,/=,%%=
注释:余算需要双%做转义
(1) 并且:&& // 条件1 && 条件2 (1不满足,不执行2)
(2) 并且:& // 条件1 & 条件2 (1不满足,也执行2)
(3) 或者:|| // 条件1 || 条件2 (1满足,不执行2)
(4) 管道运算符:| // dir | find ".txt" 输出结果语句后 | 加 find 文本 过滤出指定信息的结果
有特殊含义符号,输出时需要做转义处理
^<
^>
^&
^|
%%
(1) echo 文本信息 > 文件名.后缀 // 当前文件夹下有文件内容全替换,无文件作成文件及内容
(2) echo 文本信息 >> 文件名.后缀 // 当前文件夹下有文件内容换行追加,无文件作成文件及内容
(1) 查看文件夹: dir // 查看当前文件夹下,文件夹及文件名
(2) 切换文件夹: cd .. | ../文件夹 | 文件夹 // 切到上级文件夹,上级文件夹的子文件夹,子文件夹。正反斜线都可
(3) 查看文件内容: type [文件夹\]文件名.后缀 // 显示文件内容
(4) 显示文件层级目录: tree [/a] [/f] // 显示当前文件夹内,所有文件夹层级目录,a显示不同,f文件也显示
(1) 创建文件夹: mkdir | md [文件夹\] 文件夹 // 创建文件夹,多级文件夹
(2) 删除文件夹: rmdir | rd [/s [/q] ] [文件夹\] 文件夹 // 删空文件夹,删最里层文件夹,s内部全删,q不确认
(3) 重命名文件夹: rename | ren 文件夹 新文件夹名 // 重命名
(1) 复制: copy | xcopy [/y(默认覆盖) | /-y(提示存在确认)] 文件夹|文件 目标文件夹 // 将文件夹内文件(不含文件夹及内容)或指定文件,复制到目标文件夹内,xcopy大量文件更快
(2) 删除文件: del [/p] [/f] [文件夹\] 文件名 | *.后缀 // 删除文件,p删除前确认,f强删只读, *范围匹配
(2) 删除文件夹下文件: del [/s] 文件夹 | [文件夹\] *.后缀 // 删除文件夹, *文件夹子级文件,s文件夹所有层级文件
(3) 剪切: move [/y(默认不提示) | /-y(覆盖提示)] [文件夹\]文件.后缀 [文件夹\]新文件名.后缀 // 剪切文件,同文件夹可改文件名,
(1) 条件判断:if 条件 (...) else if 条件 (...) else (...)
(2) 文件存在判断:if [not] exist [c:\文件夹 | 文件夹\]文件.后缀 | 文件夹 (...) // 判断文件或文件夹是否存在
(3) 变量存在判断:if [not] defined 变量名 (...) //判断变量是否存在
(1) 等于: if [变量==变量 | 变量 equ 变量]
(2) 不等于:if [not 变量==变量 | 变量 neq 变量]
(3) 小于:if 变量 lss 变量
(4) 小于等于:if 变量 leq 变量
(5) 大于:if 变量 gtr 变量
(6) 大于等于:if 变量 geq 变量
(7) 不区分大小写:if /i 变量 eq 变量
(1) 循环数值:for /L %%临时变量 in (开始值, 增加值, 结束值) do (...) //临时变量只能是1个字母
(2) 循环文件:for /r "c:\文件夹 | 文件夹" %%临时变量 in (文件名.后缀 | *.*) do (...)
(3) 循环固定数据:for %%临时变量 in (值, 值, 值,...)
(4) 循环文件内容:for /f in [c:\文件夹\]文件名.后缀
(5) 循环当前文件夹下文件夹:for /d %%临时变量 in (* | 文件夹\*) // 遍历当前文件夹或in指定文件夹下的文件夹名
(1) 定义代码块:【:代码块名】 // 分号后定义名称,使goto可识别该名称,语句不执行
(2) 跳转:goto 代码块名 //使程序跳转到该行,再继续向下执行
(3) 结束程序:exit // 退出程序,跟在pause之后
(1) 显示当前日期:date /t
(2) 设置当前日期:date 日期
(3) 显示当前时间:time /t
(4) 设置当前时间:time 时间
注释:改变的是本地计算机的系统日期时间
(1) 截取字符串:%变量名:~[(正)开始下标 | (负)倒数位数], [(正)获取数量 | (负) 不含结尾数量] %//省略第二个值表示取到结尾
(2) 替换字符串: %变量名:目标字符=新值%
(3) 拼接字符串:%变量%%变量% // 或 文本后直接写%变量%
(1) 窗口颜色:color 背景色文字色 // 例如 color 14 (1背景蓝色,4文字红色)
(2) 窗口标题:title 标题名
(3) 窗口大小:mode con clos=40 lines=6 // cols一行的半角位数,lines行数
(4) 弹窗信息:msg [username|sessionname|sessionid|*] 弹窗信息
(1) 开启新窗口:start [窗口标题] [xx.bat] // 开新窗口,可指定标题,可指定新窗口执行文件
(2) 执行文件:start /b xx.bat // 在当前窗口执行文件,与原程序异步执行
(3) 清屏:cls
(1) 调用外部程序:call 文件名.bat [参数1 ...参数9] // 最多传9个参数,子程序结束后继续执行
(2) 外部程序获取参数:%1~%9 // 只能识别%加1个数值,子程序不能pause结束,否则主程序不继续执行
(1) 同文件代码块调用: call :代码块名 [参数1 ...参数9] // 代码块修改变量影响外部的值,修改内部定义变量不影响外部数据
(2) 结束代码块:goto :eof // 代码块程序终止,回到主程序继续执行
代码执行错误的返回值大于0,TODO未验证使用方式
(1) 判断成功:if errorlevel 0 (...) // 成功执行
(2) 判断成功:if %errorlevel% == 0 (...) // 成功执行
本人windows10,at命令提示被弃用,应使用schtasks,具体可参照 schtasks /? 查看
net [user] /? // 本机命令
ipconfig // 显示ip信息
ping ip // 显示网络传输信息
netstart -an [ | find "信息" ] // 输出网络连接信息
shutdown // 关闭计算机
mstsc // 远程桌面连接
tasklist // 任务列表
tasklist /s 远程ip /u 用户名 /p 密码 //远程任务列表
taskkill /im 任务.exe // 关闭任务