Windows批处理编程学习笔记

windows批处理

一、什么是批处理程序?

  • 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展
    名为bat
  • batch file programming 是微软自带的开发语言,不需要构建环境就可以执行的脚本
  • 批处理文件(batch file)使用cmd执行,批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。

第一个Hello World! .bat文件

@echo off
echo Hello World!
pause

二、批处理运算操作

+
-
*
/
%

例子:
set /a 1+1
2
C:\Users\1>set /a 1-1
0
C:\Users\1>set /a 1*2
2
C:\Users\1>set /a 1/1
1
C:\Users\1>set /a 1%1

使用set /a 表示执行算数运算,如果想要使现多次操作,需要保存到 .bat 文件中。

@echo off

set /a var = 1+1
echo %var%

pause

变量需要使用%%包裹

重定向运算

> 覆盖
>> 追加
文本文件内容查看type
<
<<
关系运算 < >

多命令运算

&& 逻辑与,具有短路,第一个命令不执行第二个也不执行
|| 逻辑或,第一个命令执行失败,第二个才会执行,两边最多只能执行成功一个

管道符号

| 如 A|B 可以将A的输出作为B的输入

image-20211024205305306

三、批处理的基本命令

帮助信息获取(/? /help)

/? 命令帮助信息查看   /help 获取详细的帮助信息

批处理文件参数传递(%num)

.bat 文件接受参数使用%num

eg:

net user %1 %2 /add   bat文件传递的参数就会替换%1(第一个参数) %2(第二个参数)

image-20211024212134195

这是因为没有设置参数

image-20211024212206942

注释符(rem)

rem 内容    rem就是remember的缩写

命令提示符设置

颜色设置(color)

eg:

image-20211024212955736

标题命令(title)

image-20211024213210341

时间相关命令

date 日期
time 时间

启动命令(start)

image-20211024214559726

调用其他bat文件(call)

使用call语句

image-20211024214948463

image-20211024214928100

注意: 调用其他bat文件中,无法传递参数

任务列表查看命令(tasklist)

image-20211024221036442

任务关闭命令(taskkill)

eg:

taskkill /pid 12345 /T   结束pid为12345的进程

文件夹结构查看命令(tree)

image-20211024221657627

可以将文件夹的结构

关机重启命令(shutdown)

image-20211024222338593

计划任务命令(at / schtasks)

image-20211025074647322

at命令在win10中已经被弃用

推荐使用schtasks命令来代替at使用

image-20211025074827403

环境变量(set)

echo %os%  打印os变量值

文件夹或文件相关命令

目录浏览(dir)

dir是directory的缩写,可以显示目录中的文件和子目录列表。

image-20211025075943667

目录新建与删除(mkdir / rmdir)

mkdir 创建新目录,与md命令功能一致

image-20211025080407117

rmdir 删除目录,功能与rd功能一致

image-20211025080428790

删除不为空的目录,增加 /s 参数

目录切换(cd)

eg:

cd a/b/c/d        进入a/b/c/d 目录下 

目录重命名(ren)

rename的缩写

image-20211025081942891

目录复制(copy)

eg:

copy a b          将a目录下的所有文件复制到b中
copy a/1.txt b    将a目录下的1.txt文件复制到b中

文件删除(del)

eg:

del 文件路径
del c:/a/1.txt    删除c:/a/1.txt

文件剪切命令(move)

image-20211025083012304

move命令可以移动文件并重命名

move A文件地址 B文件地址

网络相关命令

用户操作命令(net user)

image-20211025083904823

- Net user [username [password | *] [options]] [/domain]
- net user
- 添加或更改用户帐号或显示用户帐号信息。
- net user 用户名 显示该用户的信息
- 在不带参数的情况下是显示用户账号列表
- net user 用户名 密码 /add	增加用户
- net user 用户名 /delete	删除用户
- net user 用户名 *	修改密码
- net user 用户名 /active:yes	激活用户
- net user 用户名 /active:on	禁用用户
- net user 用户名 /times:日期段,时间段(要求整点)	设置可访问的时间段,M,T,W,T,F,Sa,Su表示星期一到星期天,eg:M-F
- net user test /time:M-F,8:00-18:00

用户组操作命令(net localgroup)

- net localgroup	查看系统中的用户组
- net localgroup 组名 新用户 /add	增加新用户到该用户组中
- net localgroup administrators admin /add	增加新用户到用户组中
- net localgroup administrators admin /delete	删除

网络连通检测命令(ping)

ping www.baidu.com    

image-20211025085215002

网络连接命令(telnet)

windows下默认不开启telnet

image-20211025085617096

telnet可以进行端口连接测试,以及连接具体主机的测试

路由信息查看(tracert)

image-20211025090114990

网络适配器命令(ipconfig)

获取电脑网络适配的信息

> ipconfig                       ... 显示信息
    > ipconfig /all                  ... 显示详细信息
    > ipconfig /renew                ... 更新所有适配器
    > ipconfig /renew EL*            ... 更新所有名称以 EL 开头
                                         的连接
    > ipconfig /release *Con*        ... 释放所有匹配的连接,
                                         例如“有线以太网连接 1”或
                                             “有线以太网连接 2”
    > ipconfig /allcompartments      ... 显示有关所有隔离舱的
                                         信息
    > ipconfig /allcompartments /all ... 显示有关所有隔离舱的
                                         详细信息

ARP信息命令

image-20211025090834657

arp -a          显示ARP表
arp -s IP MAC   增加内容
arp -d IP       删除

条件判断结构

if / else

@echo off
rem 演示if-else结构 判断字符串是否为规定的字符串
set v=hello
if %v%==hello (echo ok) else (echo no)

pause>nul 
rem >nul 会将pause输出的内容输出到一个空设备

image-20211025221224949

文件存在判断(exist)

@echo off
rem 程序用来判断当前1.bat是否存在
if exist E:\228 (echo ok) else (echo no)

pause>nul

注意,文件路径必须是英文路径

删除文件(del)

@echo off
if exist E:\228 (
    echo file is find!
    del E:\228\4.txt
) else (
    echo file is not find!
)

pause>nul

循环结构(for)

遍历目录(for /d)

for /d in (路径/*) do 具体操作

@echo off
for /d %%a in (*) do (echo %%a)
pause>nul

可以输出遍历该文件当前目录文件夹,并输出文件夹名

当然可以配合if判断语句实现删除文件夹

遍历目录及其子目录下的文件(for /r)

@echo off
rem for test

for /r C:\user %%v in (*.py) do (echo %%v)
rem &&v 是一个变量,将遍历文件的结果存入,in后的是匹配规则

pause>nul

遍历数字(for /L)

for /L %%v in (start,step,end) do 操作

@echo off
for /L %%v in(1,1,20) do (echo %%v)
pause>nul

可以使用ping命令并将网段进行拼接使用

@echo off
rem ping命令拼接使用

for /L %%v in (1,1,20) do (ping %1.%%v)

pause>nul

遍历文件内容(for /F)

@echo off
for /f %%v in (3.bat) do (echo %%v)
rem in后的值为遍历内容的文件名
pause>nul

循环执行代码块(:loop goto)

:loop
md a
cd a 
goto

上述代码就会循环执行,结果是创建了很多a目录

bat批处理脚本转exe程序

注意不要将转换的程序直接在本电脑使用,可能在转换过程中会被工具加入木马!!!可在虚拟机中使用。aa

posted @ 2021-10-26 00:37  ZZB。  阅读(445)  评论(0)    收藏  举报