Window待处理脚本
- (一)、批处理编程初步体验
- 1.什么是批处理程序?
- (1).批处理程序的定义
- (2).如何编辑批处理程序
- 2.批处理程序可以做什么?
- (1).匹配规则删除文件
- (2).新建文件,日志等
- (3).创建计算机病毒等
- 3.一个基本的批处理文件
- (1).带盘符的输出->HelloWorld
- (2).不带盘符的输出->HelloWorld
- 4.命令分类
- (1).内部命令
- (2).外部命令
- (二)、批处理运算操作
- 1.算术运算
- (1).命令模式
- (2).文本模式
- 2.重定向运算
- (1).什么是重定向运算?
- (2).五大重定向运算符
- (3). 查看指定文件的内容
- (4).文件和文件之间的传输
- 3.多命令运算
- (1).什么是多命令运算?
- (2).两种多命令运算符
- 4.管道操作运算符
- (1).什么是管道运算符
- (三)、批处理基本命令
- 1.命令帮助
- (1).第一种命令帮助查询 (net)
- (2).第二种命令帮助查询 (xxx /?)
- (3).第三种命令详细帮助信息 (xxx /help)
- 2.批处理文件参数传递
- (1).什么是批处理文件参数传递
- (2).批处理演示示列 (%num)
- 3.注释符扩展
- (1).为什么需要注释符?
- (2).注释符 (rem)
- 4.炫酷命令提示符
- (1).为什么要使用炫酷命令提示符
- (2).背景颜色命令 (color)
- (3).标题的命令(title)
- 5.时间相关命令
- (1).为什么需要使用时间命令?
- (2).日期命令 (date)
- (3).时间命令 (tme)
- 6.启动命令
- (1).启动一个新的cmd窗口
- (2).启动一个新的cmd窗口并命名
- (3).启动一个新的脚本或则程序
- (4).启动一个脚本程序但不新建一个cmd窗口
- 7.调用其他的bat文件
- (1).同目录下调用不同bat文件
- 8.任务列表查看命令
- (1).任务列表
- 9.任务关闭命令
- (1).关闭指定进程
- 10.文件夹结构查看命令
- (1).对当前目录进行树级目录
- 11.关机命令
- (1).使用可视化界面关闭远程主机的电脑
- (2).关闭本机电脑
- 12.计划任务命令
- (1).at 命令已经在win 10 被弃用
- 13.批量处理环境变量
- (1).修改我们系统的环境
- (四)、文件夹
- 1.目录浏览
- (1).查看当前目录
- (2).当前目录帮助
- 2.目录新建或删除
- (1).创建文件
- (2).递归创建我们的文件夹
- (3).删除文件
- 3.目录切换命令
- (1).切换命令
- 4.目录重命名
- (1)修改项目名
- 5.目录复制
- (1).复制整个文件夹 (以及子文件)
- (2).单独复制一个文件 (txt)
- 6.文件删除
- (1).文件删除 (del)
- (2).删除所有以txt结尾的文件
- 7.文件剪切命令
- (1).文件剪切命令
- (五)、网络相关命令
- 1.用户命令
- (1).用户操作命令
- 2.用户组操作命令
- 2.主机连通性检测
- (1).帮助命令
- (2).联通外部网站
- 3.网络连接命令
- (1).打开telnet功能
- (2).查看我们的telnet命令
- (3).连接我们自己本地的服务器
- 4.网络路由信息命令
- (1).tracert 帮助命令
- (2).查看一下本机电脑的
- 5.网络适配器
- (1).查看我们的ipconfig适配器
- (2).释放我们本机的ip地址
- (3).重新获取我们本地的ip地址
- 6.ARP信息命令
- (1).认识ARP命令
- (2).查看我们的arp表
- (六)、条件判断结构
- 1.if-else
- (1).简单用列
- 2.文件存在案列
- (1).简单案列
- 3.文件判断删除
- (1).简单案列
- (七)、循环结构
- 1.循环遍历文件夹
- (1).遍历当前脚本所在的文件夹目录
- (2).遍历指定文件夹
- (3).遍历指定文件夹并输入到txt文件中
- (4).循环遍历删除文件
- 2.遍历目录及子目录下文件
- (1).简单案列
- 3.遍历数字
- 简单案列
- (2).连续ping组合使用
- 4.遍历文件内容
- (1).遍历出我们每一行的内容
- (2).判断是否为指定的内容
- (八)、Virus脚本分析
- 1.目录新建代码分析
- (1).循环创建我们的目录
- (九)、编程信息示列
- 1.计算机信息展示
- 2.交互操作
- 3.计划执行
- 4.批处理文件转exe文件
(一)、批处理编程初步体验
简单来说,批处理程序就是 Windows 自带的脚本,可以在 cmd | powershell 中直接运行,若写成文件,后缀为 .bat
小知识
cmd
与powershel
不区分大小写- 命令行的运算操作,类似于
PHP
- DOS 是磁盘操作系统;命令提示符是 DOS 系统的界面中输入 DOS 命令的提示位置;cmd 是系统运行其自带 DOS 的命令;cmd.exe 是一个 16 位的 DOS 应用程序
- PID 是 processid(进程号);IM 是 imaginename(映像名称)
- 在 .bat 文件开头加上 @echo off 代表不输出描述,比如 C:\Users\14805\desktop>… 这样的描述不会输出,直接输出结果
- 设置变量 set a=10,输出变量 echo %a%,设置变量表达式 set /a b=%a%+1
1.什么是批处理程序?
(1).批处理程序的定义
BAT编程,即批处理编程,是一种基于Windows操作系统的脚本编程语言。它使用文本文件作为脚本,通过一系列的命令和控制语句来执行特定的任务。BAT编程主要用于自动化重复性的任务,提高计算机的效率和便利性。本文将为您介绍BAT编程的基础知识,并引导您编写简单的批处理脚本。
bat处理文件使用cmd、exe执行。
(2).如何编辑批处理程序
- 可以使用任意的文本编辑器
notepad: window自带的文本编辑器,然后我们需要将文件后缀改成.bat即可
2.批处理程序可以做什么?
使用一系列的内置命令进行自动化操作
(1).匹配规则删除文件
(2).新建文件,日志等
(3).创建计算机病毒等
3.一个基本的批处理文件
(1).带盘符的输出->HelloWorld
- 第一步使用window+R然后输入cmd。
echo "hello world"
(2).不带盘符的输出->HelloWorld
// 1.开启window批处理文件
@echo off
// 2.输出
echo "hello world"
// 3.结束批处理文件
pause
4.命令分类
(1).内部命令
window自带的命令大全
https://www.cnblogs.com/klchang/p/4771101.html
常用小工具
工具名称 | cmd命令 |
---|---|
计算器 | calc |
记事本 | notepad |
写字板 | write |
画图 | mspaint |
放大镜 | magnify |
屏幕键盘 | osk |
字符映射表 | charmap |
专用字符编辑程序 | eudcedit |
远程桌面连接 | mstsc |
音量合成器-扬声器 | sndvol |
常用管理工具
工具名称 | cmd 命令 |
---|---|
任务管理器 | taskmgr |
资源监视器 | perfmon.msc |
查看Window版本 | winver |
资源管理器 | explorer |
计算机管理 | compmgmt.msc |
设备管理器 | devmgmt.msc |
事件查看器 | eventvwr.msc |
磁盘管理 | diskmgmt.msc |
组件管理 | dcomcnfg |
本地安全策略 | secpol.msc |
本地组策略管理器 | gpedit.msc |
组策略结果集 | rsop.msc |
本地用户和组 | lusrmgr.msc |
本地服务 | services.msc |
注册表编辑器 | regedit |
打开注册表编辑器 | regedt32 |
系统配置实用工具 | msconfig |
DirectX 诊断工具 | dxdiag |
Microsoft 控制台 | mmc |
WMI控件 | wmimgmt.msc |
(2).外部命令
(二)、批处理运算操作
1.算术运算
(1).命令模式
/a
: 表示这是一个运算命令。
// 执行加法
set /a 1+3
// 执行减法
set /a 3-1
// 执行除法
set /a 4/2
// 执行取模
set /a 5%2
(2).文本模式
输出变量的时候没有使用 %%引注
@echo off
// 1.使用var变量,进行接受值
set /a var = 1+2
// 2.直接输出var,并不会是3
echo varpause
输出变量的时候使用%%引注
@echo off
// 1.使用var变量,进行接受值
set /a var = 1+2
// 2.直接输出3
echo %var%pause
2.重定向运算
(1).什么是重定向运算?
重定向运算: 默认情况下,Powershell 把输出发送到屏幕显示。但是,Powershell也可以将输出重定向至一个文本文件,或将错误输出重定向至常规输出流。 重定向运算符意味着我们可以将命令的输出信息输出到指定的文件,完全满足脚本中的log的要求,即可以利用重定向打印脚本或命令执行的详细信息。
(2).五大重定向运算符
第一种: >
输出文件到指定文件: (会产生覆盖)
PS D:\> Get-Process > process.txt
第二种: >>
将输出追加到指定的文件: (不会覆盖,追加)
PS D:\> dir *.txt >> process.txt
第三种: 2>
将输出中的错误发送到指定的文件。(会产生覆盖)
PS D:\> Get-Process none 2> errors.txt
第四种: 2>>
将输出中的错误追加到指定的文件。该运算符是在实际使用中使用频率最高的重定向运算符。(非覆盖,追加)
PS D:\> Get-Process none,powershell 2>> .\errore.txt
第五种: 2>&1
将错误发送到成功输出流。这个需要注意,命令执行成功的信息会显示,但是错误的信息并不会显示。
PS D:\> Get-Process none,powershell 2>$1
(3). 查看指定文件的内容
type 文件
:查看指定文件的内容
(4).文件和文件之间的传输
文件 >
:表示将对应的右边的内容输出到左边,(会产生覆盖)文件 >>
:表示将对应的右边的内容输出到左边,(不会产生覆盖,表示追加)
3.多命令运算
(1).什么是多命令运算?
多命令运算就是: 多个命令一起运算。
(2).两种多命令运算符
&&
短路
&&: 具有短路,第一个命令错误,那么就不会执行第二个命令
// 前面执行失败,后面的就不会执行
aaa && ipconfig// 前面执行成功,后面的才会继续执行
ipconfig && net user
||
断路
第一个命令执行成功,第二个就不会被执行;加入第一个命令执行失败,那么第二个才会被执行。
4.管道操作运算符
(1).什么是管道运算符
管道运算符: A | B
A命令的输出结果会当作B的输入。
场景一: 对文件进行过滤
// 1.查看当前文件夹都有什么文件
dir
// 2.将dir查询的结果当作查找文件输入的文件进行查找
dir | find ".txt"
场景二:
// 1.显示全部的网络链接
netstat -an// 2.筛选出当前主机和外部的连接
netstat -an | find "ESTABLISHED"
(三)、批处理基本命令
基本格式:
命令 子命令 参数 操作 选项
1.命令帮助
(1).第一种命令帮助查询 (net)
当且仅有一个命令的时候,可以使用
net
(2).第二种命令帮助查询 (xxx /?)
net /?
(3).第三种命令详细帮助信息 (xxx /help)
net user /help
2.批处理文件参数传递
(1).什么是批处理文件参数传递
批处理文件参数传递: 就是动态的向bat文件中进行传递我们的参数。
基本格式: .bat文件接受参数使用 %num
(2).批处理演示示列 (%num)
创建一个批处理文件 a.bat 内容如下
注意事项: (一定要使用数字进行介绍,而且1代表接受第一个传递过来的参数,2代表接受第二个传递过来的参数。与我们的顺序无关)
- 这里的
%1
是接受第一个参数 。 - 这里的
%2
是接受第二个参数。
@echo offecho %1
echo %2pause
@echo offecho %2
echo %1pause
3.注释符扩展
(1).为什么需要注释符?
随着时间的推移,我们的记忆力可能会变得越来越差,所以我们需要使用注释的操作,然后对其进行标注。
- 标注格式:
rem xxxx
xxx就是我们注解的内容
(2).注释符 (rem)
@echo offrem 这里是我们的传递参数,分别传递两个参数。echo %2
echo %1
4.炫酷命令提示符
(1).为什么要使用炫酷命令提示符
因为正常情况下我们的命令和文本都是白色的,那么我们应该怎么办呢? 我们这个时候就需要使用我们的 颜色命令 。
(2).背景颜色命令 (color)
修改命令颜色的格式:
color 背景色/字体颜色
temp 背景颜色为黑色,字体颜色为蓝色color 01
(3).标题的命令(title)
修改命令的标题:
title "xxx"
5.时间相关命令
(1).为什么需要使用时间命令?
通常使用在创建我们的日志的时候,我们是需要进行打印我们的时间的。
(2).日期命令 (date)
date
rem 查看年/月/日 星期date /Trem 修改时间 (需要拥有权限)date
(3).时间命令 (tme)
rem 展示我们的时间time /Trem 修改我们时间time
6.启动命令
(1).启动一个新的cmd窗口
start
(2).启动一个新的cmd窗口并命名
start "myCmd"
(3).启动一个新的脚本或则程序
start 1.bat
(4).启动一个脚本程序但不新建一个cmd窗口
start /B 1.bat
7.调用其他的bat文件
(1).同目录下调用不同bat文件
1.bat
脚本文件
dircall 2.batpause
2.bat脚本文件
echo "hello world i'm is 2.bat"pause;
注意: 当我们使用 call
调用一个新的脚本文件的时候,我们不能对其传入我们新的数据。
8.任务列表查看命令
tasklist
: 主要用来显示在本地或远程机器上当前运行的进程列表。
(1).任务列表
tasklist
9.任务关闭命令
使用该工具按照进程 ID (PID) 或 映像名称终止任务。
(1).关闭指定进程
taskkill /pid 27344 /t
10.文件夹结构查看命令
我们可以使用文件夹结构查看命令进行对我们指定的文件夹进行树形结构操作。
(1).对当前目录进行树级目录
tree
11.关机命令
(1).使用可视化界面关闭远程主机的电脑
切记: 首先要打开防火墙。其次:要在同一个局域网下
shutdown /i
(2).关闭本机电脑
30秒后关闭自己的电脑
shutdown /s /t 30
12.计划任务命令
每天固定执行某一个 exe
程序
(1).at 命令已经在win 10 被弃用
13.批量处理环境变量
(1).修改我们系统的环境
查看我们的环境
set
输出我们OS变量的内容
echo %OS%
(四)、文件夹
1.目录浏览
(1).查看当前目录
1.使用dir命令我们可以查看当前文件夹下的信息
dir
(2).当前目录帮助
2.目录新建或删除
(1).创建文件
mkdir test
(2).递归创建我们的文件夹
mdkir /a/b/c/d/e
(3).删除文件
rmdir a
3.目录切换命令
(1).切换命令
cd /xxx
4.目录重命名
(1)修改项目名
ren test test1
5.目录复制
(1).复制整个文件夹 (以及子文件)
复制整个文件夹、但是里面的文件不会复制
copy a1 a2
(2).单独复制一个文件 (txt)
copy 2.txt 3.txt
6.文件删除
(1).文件删除 (del)
del 3.txt
(2).删除所有以txt结尾的文件
del *.txt
7.文件剪切命令
(1).文件剪切命令
move b e:\
(五)、网络相关命令
1.用户命令
(1).用户操作命令
1.可以查看我们当前电脑的用户
net user
2.查看指定用户的信息
net user 22612
3.添加用户
net user lwt 123456 /add
4.删除用户
net user lwt /delete
2.用户组操作命令
1.查看本地用户组
net localgroup
2.查看指定用户所在的组
net user 22612
3.将已经存在的用户添加到指定用户组中..
net localgroup 用户组 被添加的用户名 /add
3.删除用户组中指定的用户名
net localgroup 用户组 被删除的用户名 /delete
2.主机连通性检测
(1).帮助命令
(2).联通外部网站
ping www.baidu.com
3.网络连接命令
(1).打开telnet功能
win10的telnet默认是关闭的,我们需要进行手动打开
(2).查看我们的telnet命令
telent /?
(3).连接我们自己本地的服务器
telnet 8.130.48.9 80
4.网络路由信息命令
判断我们本地主机和目标主机 经历了多少个网络设备、网络路由才进行联通的。
(1).tracert 帮助命令
(2).查看一下本机电脑的
tracert 8.130.48.9
我们发现我们需要经历 13 跳 才能进行访问到网址
5.网络适配器
(1).查看我们的ipconfig适配器
(2).释放我们本机的ip地址
ipconfig /release
相当于断开本机的网络
(3).重新获取我们本地的ip地址
相当于重连我们本地的网络
ipconfig /renew WLAN*
6.ARP信息命令
(1).认识ARP命令
(2).查看我们的arp表
arp -a
(六)、条件判断结构
1.if-else
(1).简单用列
@echo rem 演示if-else结构代码 判断字符串是否为规定的字符串。rem 设置一个字符串变量为 hello , 在bat脚本中变量会自动识别变量的类型set v=hellorem 假如变量v等于hello的话if %v%==hello (echo ok) else (echo no)pause
2.文件存在案列
(1).简单案列
@echo offrem 程序用来判断1.bat是否存在 existsif exist E:\思维导图\1.bat (echo yes) else (echo no)pause
3.文件判断删除
(1).简单案列
@echo offrem 程序用来判断1.bat是否存在 existsif exist E:\思维导图\1.txt (echo 文件被找到,即将执行删除del E:\思维导图\1.txt
) else (echo 文件未找到!!!
)pause
注意:
- 判断语句中最后一行是左括号,就可以进行分行操作。
- 判断语句中不能进行内嵌判断语句。
(七)、循环结构
1.循环遍历文件夹
(1).遍历当前脚本所在的文件夹目录
1.遍历与当前脚本同级目录的所有文件夹名
- /d 表示文件夹
- (*) 表示遍历当前文件夹
@echo offrem 遍历文件夹 /d 表示文件夹 遍历的文件夹名放到变量a for /d %%a in (*) do echo %%apause
(2).遍历指定文件夹
@echo offrem 遍历文件夹 /d 表示文件夹 遍历的文件夹名放到变量a for /d %%c in (E:\*) do echo %%cpause
(3).遍历指定文件夹并输入到txt文件中
@echo offrem 遍历文件夹 /d 表示文件夹 遍历的文件夹名放到变量a for /d %%c in (E:\*) do echo %%c >> a.txtpause
(4).循环遍历删除文件
@echo offrem 遍历文件夹 /d 表示文件夹 遍历的文件夹名放到变量a for /d %%c in (*) do if %%c == b (rmdir %%c)for /d %%c in (*) do echo %%cpause
2.遍历目录及子目录下文件
(1).简单案列
for /r '目录路径' %%c in (匹配规则 *.txt) do 执行操作 %%c
@echo offrem 遍历文件夹 /r 表示文件 遍历的文件夹名放到变量cfor /r E:\思维导图 %%c in (*.bat) do echo %%cpause
3.遍历数字
简单案列
- %L 表示我们是一个数字内容
@echo offrem for循环我们的数字内容。 初始化为1,步长为1,最终为20for /L %%v in (1,1,20) do echo %%vpause
(2).连续ping组合使用
- %1 是我们接受的第一个参数
@echo offrem for循环我们的数字内容。 初始化为1,步长为1,最终为20for /L %%v in (1,1,20) do ping %1.%%vpause
192.168.0.1
我们的局域网的操作,也就是说我们最后一个数字是变换的。
4.遍历文件内容
(1).遍历出我们每一行的内容
@echo offrem for 文件内容。 /F 表示一个文件, 遍历出每一行的内容for /F %%v in (E:\思维导图\a.txt) do echo %%vpause
(2).判断是否为指定的内容
@echo offrem for 文件内容。 /F 表示一个文件, 假如内容为 E:\Shiro 那么我们就执行输出的操作for /F %%v in (E:\思维导图\a.txt) do if %%v == E:\Shiro (echo %%v)pause
(八)、Virus脚本分析
1.目录新建代码分析
(1).循环创建我们的目录
- loop 只是一个标签,我们可以随时进行改变
@echo offrem 进入到我们的文件夹cd E:\思维导图rem 循环创建test文件夹,并进入文件夹再创建:loop
md test
cd test
goto looppause
(九)、编程信息示列
1.计算机信息展示
@echo offrem 输出内容并覆盖
echo . > log.txt
echo Log File >> log.txt
echo . >> log.txt
rem 获取我们本机的用户名
echo User : %username% >> log.txt
rem 输出日期、时间
Date /t >> log.txt
Time /t >> log.txt
echo . >> log.txt
echo Process Ran by %username% >> log.txt
echo . >> log.txt
rem 任务列表输出到日志文件中
tasklist >> log.txt
echo . >> log.txt
echo Network Activities >> log.txt
rem 网络状态信息输出
netstat -s >> log.txt
pause
2.交互操作
类似于我们经常用的switch语句
@echo offecho 1.a
echo 2.b
echo 3.c
echo 4.drem 创建一个类似于 switch 的语句
:first
echo 请输入您的选择 (1,2,3,4)rem /p 表示我们从控制台接受一个参数,创建一个变量 opt
set /p opt=
if %opt% == 1 goto one
if %opt% == 2 goto two
if %opt% == 3 goto three
if %opt% == 4 goto four
goto firstrem 设置四种条件,然后其中的执行结果如下
:one
echo 你选择了one
pause:two
echo 你选择了two
pause:three
echo 你选择了three
pause:four
echo 你选择了four
pausepause
3.计划执行
schtasks 命令