网络小白入网指南.5

例子#想当红客的黑客#红客#黑客#网络安全

     没错!就是屏幕前的你!中国有句古话说得好:学武先学德 漫威里面班叔叔对彼得帕克临死前说得一句话:能力越大,责任越大!从而成就了蜘蛛侠,而你 !我的朋友!就是网络世界里的蜘蛛侠,惩恶扬善吧!点击进来,该让我们正式进入主题了。

         hole,baby们。今天又是你们啊,咱们的感情和知识越来越深了嗷!希望明天还是你们,希望以后也是你们,作为我的同学;作为我的超级英雄;还是我老baby,我想天天能见到你们。好了好了,让我们回忆一下咱们上次的美好记忆吧。上次咱们学到了windows 的常用的dos命令和虚拟机是什么还有虚拟机的安装,写文章-CSDN创作中心 这是上节课咱们学的内容,忘记的同学可以再复习一下。这节课咱们要学的内容是windows的批处理操作,有的同学可能就要问了,啥是批处理啊?好,别急这就给大家讲一下。

 四、windows批处理 

4.1批处理简介 

        批处理是一种计算机操作系统中的命令处理技术。它是通过编写一系列的命令脚本,将这些脚本存储在一个文件中,然后一次性执行这些命令,从而自动化完成一系列的操作任务。

        批处理通常用于简化重复性的任务,例如批量重命名文件、批量复制文件、批量删除文件等。通过批处理,用户可以通过一次性运行整个脚本来完成这些任务,而无需逐个手动执行每个命令。

        批处理脚本可以使用命令行指令、条件语句、循环语句等,可以实现复杂的逻辑判断和任务流程控制。批处理还可以使用变量来存储临时数据,以便在脚本中进行使用。

        批处理脚本通常以扩展名.bat或.cmd保存,在Windows操作系统中使用较为广泛。

说白了,批处理其实就是一个脚本文件

在这个脚本文件中是包含很多要批量、依次执行的命令的
这样的脚本文件就是批处理文件
批处理的作用
批量、自动、定时去执行一些操作
写批处理文件的方法
第一步:创建一个文本文件【后缀是txt的文件】
第二步:在文本文件中写入要自动执行的dos命令,然后保存退出
第三步:将这个文件的后缀修改为.bat
脚本就是文本文件,在文件中包含了多个要执行的命令
案例: 通过批处理,在C盘的根目录下创建三个目录
c:
cd \
md a010
md a011
md a012
echo "over."
pause

4.2 DOS命令

1)ECHO
输出一段信息
案例:输出“hello world”
echo hello world
pause

echo可以用来拼接字符串

1)没有变量

echo "hello" "world"
pause

案例:用echo将hello 字符串和world字符串拼接到一起,然后进行输出

2)变量
变量
变量中包含两个部分
变量的名字
变量中保存的值
定义变量的格式:
set 变量名=变量值
这里需要用 set 标识符来定义变量和赋值
"="号之间的空格格式要求严格,标识符后不要有空格!
例如定义一个变量,变量名是name,变量的值是tom;再定义一个变量,变量名是age,变量的值是18
set name=tom
set age=18

 使用变量的格式

%变量名%

 echo可以输出字符串,也可以输出变量中的值

使用变量的时候,需要给变量前后百分号%。

 案例:定义变量保存姓名和年龄,用echo进行输出【其实这个就是拼接有变量的字符串】

set param1=hello
set param2=world
echo %param1%%param2%ok
pause
使用变量的时候,需要给变量前后百分号%。

3)关闭/打开回显
  • 回显:
  • 其实就是在执行批处理文件的时显示批处理文件中的命令
  • 打开回显:
  • 显示批处理文件中的命令。【默认就是打开回显的】
  • 打开回显的命令:@echo on
  • 关闭回显:
  • 不显示处理文件中的命令
  • 关闭回显的命令:@echo off
echo "======执行下面的命令的时候,有回显=======" 1
ECHO:何为回显?打开回显就是执行命令时会把命令显示出来,关闭回显反之.
显示信息,或将命令回显打开或关上。
echo 命令的第一种用法:echo on 和 echo off
echo on表示打开回显
echo off表示关闭回显
echo 命令的第二种用法:echo message
这个很简单,就是显示后面的信息
echo 命令第三种用法:
显示当前回显设置状态,就是显示回显打开或关闭
echo也可以输出文件
4)印当前路径
可以借助内置变量
内置变量:在系统中自动已经定义的变量
%cd% 或者 %~dp0
set age=18
echo %age%
pause
@echo off
echo "======从这里开始就没有回显了========="
set age=18
echo %age%
pause
@echo on
echo "======从这里开始又有回显了========="
set age=18
echo %age%
pause
  • ECHO:何为回显?打开回显就是执行命令时会把命令显示出来,关闭回显反之.
  • 显示信息,或将命令回显打开或关上。
  • echo 命令的第一种用法:echo on 和 echo off
  • echo on表示打开回显
  • echo off表示关闭回显
  • echo 命令的第二种用法:echo message
  • 这个很简单,就是显示后面的信息
  • echo 命令第三种用法
  • 显示当前回显设置状态,就是显示回显打开或关闭
  • echo也可以输出文件
4)印当前路径
  • 可以借助内置变量
  • 内置变量:在系统中自动已经定义的变量
  • %cd% 或者 %~dp0
@echo off
title this is a test
echo %cd%
echo %~dp0
pause
5)REM
  • rem 注释
  • 注释的内容,就是一个解释信息【注释的内容是不会当做程序来运行】
  • 作用1:將脚本中某一行或者多少设置为不执行
  • 作用2:解释脚本中的每行内容是作用
  • 注意:
  • 可以用"::"代替"REM"
  • ::可以提高执行速度,但是REM的兼容性更好
  • 建议大家用rem注释
@echo off
rem echo "程序开始执行"
echo "lelelele"
echo "程序执行结束"
@echo on
pause
6)pause
作用是将DOS界面暂停关闭
 7)title
用来设置dos的标题
@echo off
title 我的第一个案例
rem echo "程序开始执行"
echo "lelelele"
echo "程序执行结束"
@echo on
pause
 8)中文乱码解决方案
  • 方法1:使用 chcp 65001 命令行
@echo off
chcp 65001
title this is a test
echo 哈哈哈
pause

 注意事项

在执行程序的时候,中文的内容必须在 chcp 65001 下面,否则无法解决乱码问题
例如这个例子可以解决乱码
@echo off
chcp 65001
echo 哈哈哈
pause
例如这个例子无法解决乱码
@echo off
echo 哈哈哈
chcp 65001
pause
  •  方法2:将bat文件使用txt编辑,然后另存为时选择 ANSI 编码格式

9)start
用于调用其他程序,如可执行文件exe
@echo off
title this is a test
start qq.exe
@echo on
pause
  • 这个案例就可以启动qq
  • 注意
  • qq.exe需要和批处理文件在同一个目录中,是为了方便
  • 也可以将qq.exe放到任意位置,但是在执行的时候,就必须加上路径
  • start在启动的时候,可以启动exe程序,也可以启动bat
10)读取dos输入
  • 与用户交互:用户可以进行输入,系统会进行输出
  • 此时需要将用户输入的内容保存成一个变量,这里需要用到set标识符,还有参数/p
格式是:set /p 变量名=提示语等
@echo off
chcp 65001
title 我的第一个案例
rem echo "程序开始执行"
set /p name=请输入你的姓名
set /p age=请输入你的年龄
echo 你的姓名是:%name% ,你的年龄是:%age%
echo "程序执行结束"
@echo on
pause

 案例:让用户输入一个ip地址,检查和这个IP是否在线

@echo off
chcp 65001
title 检查指定的IP是否可以通信
set /p ip=请输入IP地址:
ping -n 1 -w 1 %ip%
@echo on
pause
 11)函数
什么是函数
函数本质就是一段代码
通过使用函数,可以实现代码的重复使用,进而可以提高程序的开发效率

 定义函数的格式

:函数名
函数体
goto:eof

 函数内容是以 :函数名 开始以 goto:eof 结束

函数的调用方法

call:函数名
...
goto:eof

 调用函数就是 call:函数名

@echo off
rem 调用函数【等待函数执行完成以后,才会执行后面的代码】
call:fun1
goto:eof
rem 如果没有这个goto的话,那么下面的函数会被执行两次
rem 定义了一个函数
:fun1
echo hello boys
goto:eof
函数的特点
        批处理的函数在定义以后,是会被自动执行的
一定要注意,在各种编程语言,只有批处理的函数会被自动执行,其他的编程语言中的函数,必须 手动调用执行

 案例:

@echo off
chcp 65001
call:showInfo
call:createFile
goto:eof
:createFile
@echo off
c:
cd \
md new00
md new111
md new222
@echo on
:showInfo
@echo off
echo "当前路径是: %cd%"
echo "当前用户名:administrator"
echo "当前时间:%time%"
@echo on
@echo on
pause
注意:
        在批处理中,函数的位置,通常都是放到程序的末尾,这是因为批处理的函数会被自动执行但是在其他的编程语言中,函数的位置可以在开头也可以末尾

 思考问题:下面的ccc会不会被输出

@echo off
rem 调用函数【等待函数执行完成以后,才会执行后面的代码】
call:fun1
goto:eof
rem 定义了一个函数
:fun1
echo aaaa
echo bbbb
goto:eof
echo cccc

 改写版本

@echo off
echo 0000
pause
call:fun1
echo 11111
pause
goto:eof
echo 2222
rem 定义了一个函数
:fun1
    echo aaaa
    echo bbbb
    pause
    goto:eof
    echo cccc
    pause
pause
@echo on

 案例1:

@echo off
call:myfunc
pause
goto:eof
:myfunc
    echo hello world
    goto:eof
注意1
函数要写在程序的最后,否则在重复调用函数的时候,容易出现函数执行了一次,程序就结束的现
象,如下例:
执行正常的程序 【将函数部分写在最后】
@echo off
call:myfunc
call:myfunc
call:myfunc
pause
goto:eof
:myfunc
    echo hello world
    goto:eof

函数一定要放到goto:eof的后面,否则函数就会被多执行一次

执行异常的程序 【将函数部分写在前面】
@echo off
:myfunc
    echo hello world
    goto:eof
call:myfunc
call:myfunc
call:myfunc
pause
goto:eof
案例: 打印一个菜单
@echo off
chcp 65001
color 1b
echo ---------------------------------------------------------------
echo "1:用户登录"
echo "2:用户注册"
echo "3:退出系统"
echo ---------------------------------------------------------------
set /p cho="请选择你的操作类型[1|2|3]:"
echo 你的选择是:%cho%
pause
  • bat是串行执行命令行,所以如果没有命令控制,bat会将所有的命令行和函数从上到下全部执行

 案例:通过函数让,让用户输入三次姓名和年龄

@echo off
color 0a
call:fun1
call:fun1
call:fun1
pause
goto:eof
:fun1
    set /p name=请输入姓名:
    set /p age=请输入年龄:
    echo 姓名是%name% 年龄是%age%
    goto:eof
12)goto
用于函数或者主程序的跳转,通常的写法都是goto:eof
注意:goto:eof 写的位置不一样,效果不同
如果写在函数中,goto:eof 是用于终止函数运行
如果写在主程序中,goto:eof 是用于终止整个程序的运行
@echo off

call:myfunc
call:myfunc
call:myfunc

pause

goto:eof

:myfunc
    echo hello world
    echo hello world11
    goto:eof
    echo hello world12
13)call
用于调用函数,也可以调用别的bat脚本
@echo off
title this is a test

call:fun_test

goto:eof

:fun_test
    echo 测试函数+1
    pause
    goto :eof
14 errorlevel
是脚本内置变量
这个变量的值等于0,表示面命令执行成功
这个变量的值不等于0,表示面命令执行失败

@echo off

cd abcd

echo %errorlevel%
cd /

echo %errorlevel%

pause

 案例

@echo off
title this is a test
:fun_main
echo 这是个测试函数
call :fun_test
if %errorlevel%==0 (
call :fun_aa
)
pause
goto :eof
:fun_aa
echo 前面调用没有报错
goto :eof
:fun_test
echo 测试函数+1
goto :eof
pause

案例 

@echo off
rem 让用户输入提供ip地址,判断当前网络中,是否有这个ip
set /p ip=请输入ip地址:
ping %ip% -w 1 -n 1
echo %errorlevel%
pause
15)for
用于循环
dir /b 指定目录 这个语法可以用于获得指定目录下的所有文件和文件夹
for /f 遍历指定目录下所有的文件和文件夹
for /d 遍历指定目录下所有的文件夹
for /r 遍历指定目录下所有的文件和子文件夹中的文件
%%i 则是声明的变量,可以是任意的变量名,但变量名前面必须加上两个百分号%%
@echo off
title this is a test
:fun_main
set curdir=%~dp0test1\
echo 有后缀的是文件,无后缀的是文件夹
for /f %%i in ('dir /b "%curdir%"') do (
echo %%i
)
pause
goto :eof
@echo off
for /l %%i in (1, 1, 100) do (
echo %%i
adb devices
)
pause
关于延时
timeout 5 > 1.txt
16)for 进阶 delims(分隔符)
读取的字符串会以这些分隔符进行拆分成多个子字符串
@echo off
title this is a test
:fun_main=
for /f "delims=,/" %%i in (test.txt) do (
echo %%i
)
pause
goto :eof
17)for 进阶 token(标识列)

读取的字符串列会以标识列索引赋值给变量

@echo off
title this is a test
:fun_main=
for /f "delims=,/ tokens=1,2" %%a in (test.txt) do (
echo 索引1:%%a
echo 索引2:%%b
)
pause
goto :eof
18)>>
输出重定向
正常情况下,执行命令的时候,命令的输出结果在显示器上进行输出,这个叫做标准输出
通过>> 可以将本来显示在显示器上的内容保存到一个文件中,这就是输出重定向
@echo off
title this is a test
:fun_main
set curdir=c:\
dir /b %curdir%>>testaa.txt
pause
goto :eof

 dir /b 指定目录 这个语法可以用于获得指定目录下的所有文件和文件夹

19)屏蔽命令的输出
  • 命令的输出结果有两种情况:
  • 命令执行正确的输出
  • 命令执行错误的输出
nul 称之为黑洞文件,任何内容重定向黑洞文件后,都会消失
>nul 的使用场景:是将哪些 不需要显示在显示器上,也不需要保存的信息给清除掉
@echo off
rem 让用户输入提供ip地址,判断当前网络中,是否有这个ip
set /p ip=请输入ip地址:
ping %ip% -w 1 -n 1 >nul
echo %errorlevel%
pause
屏蔽命令执行输出结果,分两种情况

 屏蔽正确输出结果

>nul
屏蔽错误输出结果
2>nul

 例子

仅仅屏蔽正确或者错误的输出
echo aaa >nul
ech aaa 2>nul
将正确和错误的输出都屏蔽掉
echo aaa >nul 2>nul
ech aaa >nul 2>nul
20)bat中的字符串操作

1)字符串中是否包含某个字符串

echo 字符串 | findstr 子字符串 >nul && (
包含时的情况
)
案例:包含的情况如下:
@echo off
title this is a test
:fun_main
set strname=hello
set teststr=213123 hello world
echo %teststr% | findstr %strname% >nul && (
echo %teststr% 中包含 %strname%
pause
goto :eof
)
echo %teststr% 中不包含 %strname%
pause
goto :eof

 案例:不包含的情况如下:

@echo off
title this is a test
:fun_main
set strname=hel2lo
set teststr=213123 hello world
echo %teststr% | findstr %strname% >nul && (
echo %teststr% 中包含 %strname%
pause
goto :eof
)
echo %teststr% 中不包含 %strname%
pause
goto :eof

 案例:字符串删除所有空格

@echo off
title this is a test
:fun_main
set teststr=213123 hello world
set teststr=%teststr: =%
echo %teststr%
pause
goto :eof

 案例:字符串截取

@echo off
title this is a test
:fun_main
set teststr=*213123 hello world##
echo %teststr%
set teststr=%teststr:~1,-1%
echo %teststr%
pause
goto :eof
 21)copy

可以复制文件或者文v案例:

将a.txt复制成b.txt

@echo off
c:
cd /
copy a.txt b.txt >nul
pause
 22)del
  • 可以删除文件,自行测试
  • del /f 强制删除只读文件
  • del /s 从所有的目录下删除指定文件
  • del /q 安静模式

 案例:删除test.txt文件

@echo off
title this is a test
:fun_main
del /f /s /q test.txt >nul
pause
goto :eof
23)if判断
判断的格式 1
if 判断条件 (
当条件成立的时候执行的代码
)

 判断的格式2

if 判断条件 (
当条件成立的时候执行的代码
)else (
当条件不成立的时候执行的代码
)

 判断数字

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

 案例:让用户输入一个年龄,判断这个年龄是否大于18,大于18显示已成年

@echo off
set /p age=请输入年龄:
if %age% GEQ 18 (
echo 已成年
) else (
echo 未成年
)
pause

 判断字符串

== 等于

 案例:让用户输入一个IP地址,判断这个ip是否在线

@echo off
set /p ip=请输入一个IP地址;
ping %ip% -w 1 -n 1 >nul 2>nul
if %errorlevel% EQU 0 (
echo 主机在线
) else (
echo 主机离线
)
pause

 案例:

@echo off
title this is a test
:fun_main
echo 这是个测试函数
call :fun_test
if %errorlevel%==0 (
call :fun_aa
)
pause
goto :eof
:fun_aa
echo 前面调用没有报错
goto :eof
:fun_test
echo 测试函数+1
goto :eof
pause

4.3案例

案例1:查看电脑IP地址的批处理命令
@echo off
ipconfig /all
pause
案例2:删除垃圾文件
(1)批处理文件中不能采用#号的注释方式,可以采用其他注释方式,如::等,但均是行注释,本代码为方便逐行注释,采用Python的注释方式。
(2)尽量一行一条命令,然后一行一行去执行
:: 关闭回显功能,屏蔽执行过程,在屏幕上只显示结果,不显示执行过程 ,
:: 一般放在首行,常用。
@echo off
:: 为字体颜色
:: 用两个字符来设置颜色类型,前面的是背景颜色,后面的是字体颜色
color 0a
:: title为设置程序标题
title clear program
echo ---------------------------------------------------------------------------
echo 清除系统垃圾
echo 即将开始操作
echo ---------------------------------------------------------------------------
:: 设置暂停,执行到此处暂停
pause

:: 输出空一行
echo.
:: 提示正在操作
echo 正在进行清除垃圾操作,请稍后......
:: 切换到D盘
:: >nul 2>nul 将整合错误的信息都屏蔽掉
d: >nul 2>nul
:: 返回D盘根目录
cd\ >nul 2>nul
:: 删除文件及文件夹
rd . /s/q >nul 2>nul
echo 垃圾清理完成
pause
C:\Users\Administrator\Downloads
C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache

补充小知识点:
(1)按win+r键,输入cmd,在DOS命令窗口,输入color ?,可以显示各个颜色与数字字母的对应关系。
(2)批处理中,若想显示结果空一行,执行echo. ,否则即使批处理文件中有空行,显示结果也不会空行。
补充内容:
“:”冒号的用法
(1)“:”用于定义一个命令区间,可以把若干个命令划分为若干个区块,每个冒号为一个区块,如:1、:2、:3。
(2)“:”后面可以跟任何符号,包括数字、汉字、英文等,表示对这个区块起个名字。
(3)“:”并不是命令,没有任何操作,但是系统能识别,表示进入某个区块。所以“:”单独使用没有任何意义,要与goto(跳转)配合使用。
start用法
(1)start 表示开启的意思,后面可以写路径/程序/网页,帮助我们打开某个程序或网页等
(2)若start后面什么都不写,表示打开cmd。
userprofile变量和%%
(1)userprofile是一个变量,是系统自定义的,其值表示当前用户的家目录路径。
(2)%%表示取值,获取变量值。
案例3:定时小程序
定时关机命令
shutdown -s -t(秒)
例如:2小时后自动关机
shutdown -s -t 7200
取消自动关机
shutdown -a
案例4:
@echo off
color 0a
title 定时小程序V1.0
:menu
cls
echo ==========================
echo 菜单
echo 1.定时关机
echo 2.取消定时
echo 3.退出
echo ==========================
set /p cho=请选择:
if %cho% EQU 1 (
echo 设置关机时间
set /p time=请输入多少秒后关机:
shutdown -s -t %time% >nul 2>nul
pause
goto:eof
)
if %cho% EQU 2 (
echo 取消关机
shutdown -a
pause
goto:eof
)
if %cho% EQU 3 (
echo 再见
pause
goto:eof
)
echo 你输入错了,请输入[1 或 2 或 3]
pause
goto:menu

pause
案例解读:
(1)set设置变量,“set /p choose=输入您的选择序号”,其中”choose"为变量,假如不
加“/p",则"choose=“后面为变量choose的值,而加了” /p"表示choose变量的值为用户所输入
的,后面跟的话只是给用户看的。该行命令是为了给用户选择。
(2)set设置变量,“set /p time=请输入定时关机时间(单位/s):”,其中”time"为变量,假如
不加“/p",则time=后面为变量time的值,而加了" /p"表示time变量的值为用户所输入的,后面跟的话只是给用户看的。该行命令是为了给用户设置定时关机时间。
(3)“goto menu” 这行命令是为了执行完1或2区块后程序不会继续往下执行,而是返回菜单。
(4)这个清屏命令是为了执行完1或2区块后程序返回菜单区块后,之前的菜单可以清屏,只是为了美观。
(5)注意逻辑完整,提示信息完整。
针对win7和win10杀进程
  • taskkill杀进程
  • taskkill /im explorer.exe /f
  • #强制杀死指定名称的进程.
  • taskkill为杀进程
  • /im为指定进程,后面可#以跟进程名称,
  • /f表示强制,
  • explorer.exe是windows程序管理器/桌面进程。
 案例5:
@echo off
color 0a
taskkill /im explorer.exe /f >nul 2>nul
echo IE被杀死了
ping -n 5 127.0.0.1 >nul 2>nul
start c:\windows\explorer.exe
echo .....
pause
案例6:快速查看本机IP地址和电脑名
@echo off
echo 本机IP
ipconfig|find "IPv4"
echo.
echo 电脑名
hostname
pause>nul
exit
获取局域网内本机IP:
@echo off
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
set IP=%%a
)
echo 你的局域网IP是:
echo %IP%
pause>nul
 案例7:重启网卡的批处理命
@ECHO OFF
ECHO Fix DHCP Configuration:
ECHO The network card is restarting
ECHO Please wait...
ipconfig /release>NUL 1>NUL 2>NUL
ipconfig /renew>NUL 1>NUL 2>NUL
ECHO All Done. The network card has restarted !
ECHO Please enjoy it.
:EN
PAUSE
案例8:清除DNS缓存并重新注册DNS的批处理
清除DNS缓存并重新注册DNS的批处理
@echo off
ipconfig /flushdns
ipconfig /registerdns
ping www.baidu.com
pause
获取本机用户及当前用户的批处理命令
@echo off
echo 本机上拥有以下用户名:
echo.
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i
if not "%%j"=="" echo %%j
if not "%%k"=="" echo %%k
)
echo.
echo 当前登录本机的账户是:%username%
pause>nul

         好了好了,同学们,看到现在的肯定也很累了。(说实话我也累了)而且能看到最后的估计都没一个人吧,要是有的话。评论区告我一声,未必回你1.各位英雄,到此为止吧,朕歇了。明天见,亲爱的你们。

        还是那句话:能力越大,责任越大!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值