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的输入

三、批处理的基本命令
帮助信息获取(/? /help)
/? 命令帮助信息查看 /help 获取详细的帮助信息
批处理文件参数传递(%num)
.bat 文件接受参数使用%num
eg:
net user %1 %2 /add bat文件传递的参数就会替换%1(第一个参数) %2(第二个参数)

这是因为没有设置参数

注释符(rem)
rem 内容 rem就是remember的缩写
命令提示符设置
颜色设置(color)
eg:

标题命令(title)

时间相关命令
date 日期
time 时间
启动命令(start)

调用其他bat文件(call)
使用call语句


注意: 调用其他bat文件中,无法传递参数
任务列表查看命令(tasklist)

任务关闭命令(taskkill)
eg:
taskkill /pid 12345 /T 结束pid为12345的进程
文件夹结构查看命令(tree)

可以将文件夹的结构
关机重启命令(shutdown)

计划任务命令(at / schtasks)

at命令在win10中已经被弃用
推荐使用schtasks命令来代替at使用

环境变量(set)
echo %os% 打印os变量值
文件夹或文件相关命令
目录浏览(dir)
dir是directory的缩写,可以显示目录中的文件和子目录列表。

目录新建与删除(mkdir / rmdir)
mkdir 创建新目录,与md命令功能一致

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

删除不为空的目录,增加 /s 参数
目录切换(cd)
eg:
cd a/b/c/d 进入a/b/c/d 目录下
目录重命名(ren)
rename的缩写

目录复制(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)

move命令可以移动文件并重命名
move A文件地址 B文件地址
网络相关命令
用户操作命令(net user)

- 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

网络连接命令(telnet)
windows下默认不开启telnet

telnet可以进行端口连接测试,以及连接具体主机的测试
路由信息查看(tracert)

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

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输出的内容输出到一个空设备

文件存在判断(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

浙公网安备 33010602011771号