批处理脚本学习笔记
*文件编码方式 否则中文输出乱码
*写代码时不区分大小写
@echo off //关闭回显
echo hello world //输出hello world
pause //执行后暂停
显示 设置 删除变量
set
Set 显示全部变量及其值
Set s 显示全部 s开头的变量及其值
Set aa=abcd或set “aa=abcd” 创建变量aa 赋值为abcd(不需要区分类型,既是字符串也是数字)
%aa% 调用变量
“set aa=” 删除变量
内部命令(参考同目录cmd.txt文件)
cls 清屏
运算操作
set /a //加 减 乘 除 取余
重定向运算
> //左侧内容覆盖右侧
>> //左侧内容追加到右侧
< //右侧内容覆盖到左侧
<< //右侧内容追加到左侧
dir //查询当前目录文件结构
Echo “hello world” > a.txt //把hello world字符串覆盖到文件a.txt(没有先自动创建)
Type a.txt //查看a.txt 的内容
Echo “hello far” >> a.txt //把hello far字符串追加到文件a.txt(没有先自动创建)
多命令运算
&& //第一个命令执行错误不会执行第二个命令
|| //前面执行失败后面会执行,前面执行成功后面不执行
管道操作运算
| A|B
Mkdir 文件夹名称//创建空目录
Dir / find “.txt” //查询.txt文件不显示别的类型文件和文件夹
Netstat -an //显示全部协议 地址 和连接状态
Netstat -an | find “"ESTABLISHED” //只显示 ESTABLISHED状态的内容
批处理基本命令格式
命令 子命令 参数 操作 选项
命令 /? 或 /help 获取详细的帮助信息
批处理文件参数传递
输入两个数 求和并显示
*注意 输入的时候 变量=后面不要有空格
num1 = 请输入第一个数字 //这样是错误的 因为空格会被当做输入的一部分
注释
Rem 注释文本 不关闭回显 注释无效 会显示
添加新用户和注释
:: 完全注释 关闭或打开回显 都不执行不显示
CMD窗口样式自定义
Title 标题名称 //修改cmd窗口标题
Color 0a //黑背景浅绿色字 关闭cmd窗口再打开一个会还原
时间相关命令
Date /t //显示日期
Time /t //显示时间
启动命令
Start //启动一个单独的窗口以运行指定的程序或命令
Start /b //启动程序或命令 不单独创建窗口
调用其他bat文件
Call xx.bat
任务列表查看命令
//远程连接192.168.1.1机器 用户名admin 密码123456 ,密码没有可以不写
tasklist /s 192.168.1.1 /u admin /p 123456
Tasklist /fi //筛选器
Eq 等于
Ne 不等于
Gt 大于
Lt 小于
Ge 大于等于
Le 小于等于
Like 类似
not like 不类似
tasklist /fi "WINDOWTITLE eq test.txt - 记事本" //通过窗口标题显示 映像名称PID等
/fo 执行输出格式
任务关闭命令
Taskkill
文件夹结构命令
Tree
关机命令
Shutdown
Shutdown /p //本地关机
Shutdown /i //打开远程关机的UI界面
Shutdown /s /t 30 //30s后本地关机
计划任务命令
At(win10 启动 改用 schtasks)
环境变量命令
Set
可以查询也可以设置
添加用户环境变量和系统环境变量
setx TestVar "TestValue" //添加到用户环境变量
setx TestVar "TestValue" /m //添加到系统环境变量
目录(文件夹)和文件管理命令
目录浏览
Dir //显示目录中的文件和子目录列表
Dir /a //显示全部目录和文件(包含隐藏)
目录新建/删除
Mkdir A //新建文件夹A
Mkdir A\B //新建文件夹A 进入A文件夹在A文件夹中新建文件夹B(如果A不存在)
Mkdir a b c //新建文件夹 a b c
Rmdir A //删除文件夹A
rmdir A /S //删除文件夹A和子目录和文件(会确认是否删除)
Rmdir A /S /Q //删除文件夹A和子目录和文件(不要求确认)
切换目录
Cd 具体目录 //切换到对应目录
Cd.. //退到上一级目录
重命名目录
Ren a b //重命名文件夹a为b
目录复制
Copy a b //把a文件夹下的文件复制到b文件夹中(不包含a文件夹的子文件夹)
删除文件
Del 文件路径
文件剪切
Move 文件目录 目录
Move b\1.txt b\2.txt //表示目录不变 文件名称修改为2
Move b\2.txt a\1.txt //移动同时重命名
用户操作命令
Net user //查看增删用户
用户组操作命令
把新创建的用户添加到 administrators(系统管理员权限的组)就给用户进行了提权
把用户testUser从users组中删除
主机连通性检测命令ping
Ping本机 查看 IP/TCP 协议是否正常 判断网络是否正常
持续ping
网络连接命令telnet
如果没启动服务需要手动启动一下telnet
使用quit退出telnet
连接具体ip和端口
查看网络路由信息命令tracert
查看路由信息
查看网络适配器信息命令ipconfig
查看网络适配器的配置信息和诊断网络连接
地址解析协议(Arp)命令
查询和修改操作系统的ARP(地址解析协议)缓存表。ARP用于将IP地址映射到物理MAC地址,以便在本地网络上进行通信。
条件判断语句 if else
判断文件是否存在 exist
Exist 后是文件路径,批处理相同路径下使用文件名(相对路径即可),别的文件夹使用绝对路径
判断文件是否存在,后进行一些操作
循环遍历文件夹名称
for /d %%a in (*) do echo %%a //循环遍历所有文件夹 并且输出文件夹名称
for /d 是一个for循环命令的变体,用于遍历文件夹而不是文件
%%a 是一个循环变量,可以用于代表当前循环的文件夹
(*) 是通配符,表示遍历当前目录下的所有文件夹
do echo %%a 是在每个文件夹上执行的操作,这里是打印出文件夹的名称
*批处理文件中 %%a 第一个%是转义字符,cmd中直接写%a即可
循环遍历指定目录及其子目录中的文件
for /r ".\" %%v in (*.txt) do echo %%v //循环变量当前目录下全部文件夹及其子文件中的txt
for /r 是一个递归循环命令,用于遍历指定目录及其子目录中的文件
".\"是当前批处理文件所在目录
%%v 是一个循环变量,可以用于代表当前循环的文件名
(*.txt) 是通配符,表示只匹配文件名以.txt结尾的文件
do echo %%v 是在每个文件上执行的操作,这里是打印出文件的路径和名称
*遍历中文目录下的文件 注意批处理文件编码为ANSI
*双击代码 无法删除文件问题
遍历数字
for /L %%v in (1,1,20) do echo %%v //变量数字1-20 每次+1(中间的1为步长)
for /L %%v in (1,1,254) do ping %1.%%v //循环自动ping ip