bat笔记
:::info{title="相关信息"} 只有一小部分,如果你的工作系统是windows的话,推荐去学Powershell :::
第一天
1、命令格式
@echo off ::取消显示cmd界面路径
cls ::清屏
chcp 65001 ::使用中文输出
net user ::用户管理命令 详细用法 cmd界面输入:net user /help
%1 ::第一个位置变量 %2 %3 ………以此类推
echo %1 ::输出第一个位置变量值
pause ::请按任意键结束……
title USERADD ::cmd命令窗口标题为USERADD
date /t ::显示当前日期 格式为2022/12/03 周六 #不加/t是修改日期
time /t ::显示当前时间 格式为 12:34 #同上,不加/t是修改时间
start ::启动一个新的cmd界面,start "new cmd" 这样新开的cmd标题就会是new cmd
start test.bat username password ::使用test.bat新启动一个cmd,并且会加两个位置变量
call name.bat ::运行另一个批处理
第二天
1、列出系统进程 tasklist
tasklist ::相当于ps,列出任务信息以及pid
详细参数使用tasklist /? 列出详细信息
······································································································
F:\桌面>tasklist /?
TASKLIST [/S system [/U username [/P [password]]]]
[/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]
描述:
该工具显示在本地或远程机器上当前运行的进程列表。
参数列表:
/S system 指定连接到的远程系统。
/U [domain\]user 指定应该在哪个用户上下文执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果省略,则
提示输入。
/M [module] 列出当前使用所给 exe/dll 名称的所有任务。
如果没有指定模块名称,显示所有加载的模块。
/SVC 显示每个进程中主持的服务。
/APPS 显示 Microsoft Store 应用及其关联的进程。
/V 显示详细任务信息。
/FI filter 显示一系列符合筛选器
指定条件的任务。
/FO format 指定输出格式。
有效值: "TABLE"、"LIST"、"CSV"。
/NH 指定列标题不应该
在输出中显示。
只对 "TABLE" 和 "CSV" 格式有效。
/? 显示此帮助消息。
筛选器:
筛选器名称 有效运算符 有效值
----------- --------------- --------------------------
STATUS eq, ne RUNNING | SUSPENDED
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名称
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号
SESSIONNAME eq, ne 会话名称
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 小时,
mm - 分钟,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用(以 KB 为单位)
USERNAME eq, ne 用户名,格式为
[域\]用户
SERVICES eq, ne 服务名称
WINDOWTITLE eq, ne 窗口标题
模块 eq, ne DLL 名称
注意: 当查询远程计算机时,不支持 "WINDOWTITLE" 和 "STATUS"
筛选器。
Examples:
TASKLIST
TASKLIST /M
TASKLIST /V /FO CSV
TASKLIST /SVC /FO LIST
TASKLIST /APPS /FI "STATUS eq RUNNING"
TASKLIST /M wbem*
TASKLIST /S system /FO LIST
TASKLIST /S system /U 域\用户名 /FO CSV /NH
TASKLIST /S system /U username /P password /FO TABLE /NH
TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
·····································································································
1、按照服务状态进行过滤
tasklist /fi "status {eq/ne} {服务状态}"
例:列出所有正在运行的服务
F:\桌面>tasklist /fi "status eq running"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
csrss.exe 1236 Console 1 7,400 K
dwm.exe 1780 Console 1 121,468 K
NVDisplay.Container.exe 3840 Console 1 49,936 K
……………………
2、按照pid号进行查询
tasklist /fi "pid {eq/ne} {pidnum}"
例:列出pid等于9908的服务
F:\桌面>tasklist /fi "pid eq 9648"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
svchost.exe 9648 Services 0 6,960 K
3、按照映像名称插叙
tasklist /fi "imagename {eq/ne} {映像名称}"
例:列出映像名叫cmd.txt的信息
F:\桌面>tasklist /fi "imagename eq cmd.exe"
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
cmd.exe 19488 Console 1 6,708 K
4、查看远程主机的进程信息
tasklist /s {IP} /u {UAERNAME} /p {PASSWORD}
例:tasklist /s 192.168.44.229 /u test /p 123@.com
2、查看系统信息 systeminfo
systeminfo ::列出系统基本信息
用法如下 systeminfo /?
········································································································
F:\桌面>systeminfo /?
SYSTEMINFO [/S system [/U username [/P [password]]]] [/FO format] [/NH]
描述:
该工具显示本地或远程机器(包括服务包级别)的操作系统配置的信息。
参数列表:
/S system 指定要连接的远程系统。
/U [domain\]user 指定应该在哪个用户上下文执行命令。
/P [password] 指定给定用户上下文的密码。如果省略则
提示输入。
/FO format 指定显示结果的格式。
有效值: "TABLE"、"LIST"、"CSV"。
/NH 指定“列标题”不应该在输出中显示。
只对 "TABLE" 和 "CSV" 格式有效。
/? 显示帮助消息。
例如:
SYSTEMINFO
SYSTEMINFO /?
SYSTEMINFO /S system
SYSTEMINFO /S system /U user
SYSTEMINFO /S system /U domain\user /P password /FO TABLE
SYSTEMINFO /S system /FO LIST
SYSTEMINFO /S system /FO CSV /NH
····································································································
3、杀死进程 taskkill
taskkill ::杀死进程 用法: taskkill /?
········································································································
E:\桌面>taskkill /?
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
描述:
使用该工具按照进程 ID (PID) 或映像名称终止任务。
参数列表:
/S system 指定要连接的远程系统。
/U [domain\]user 指定应该在哪个用户上下文执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果忽略,提示
输入。
/FI filter 应用筛选器以选择一组任务。
允许使用 "*"。例如,映像名称 eq acme*
/PID processid 指定要终止的进程的 PID。
使用 TaskList 取得 PID。
/IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来
指定所有任务或映像名称。
/T 终止指定的进程和由它启用的子进程。
/F 指定强制终止进程。
/? 显示帮助消息。
筛选器:
筛选器名 有效运算符 有效值
----------- --------------- -------------------------
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名称
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号。
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 时,
mm - 分,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用量,单位为 KB
USERNAME eq, ne 用户名,格式为 [domain\]user
MODULES eq, ne DLL 名称
SERVICES eq, ne 服务名称
WINDOWTITLE eq, ne 窗口标题
说明
----
1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
2) 远程进程总是要强行 (/F) 终止。
3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。
例如:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
········································································································
1、杀掉进程名为notepad.exe的进程
taskkill /fi "imagename eq notepad.exe"
taskkill /im notepad*
taskkill /pid {进程的pid号}
#/fi和/im 后面填写的进程名都可以使用*作为通配符
2、强制杀cmd.exe进程以及他的子进程 强制杀死进程:/f 杀子进程:/t
taskkill /f /im cmd.* /t
4、目录树命令 tree
tree 以树状图显示目录及文件
·········································································································
E:\>tree /?
以图形显示驱动器或路径的文件夹结构。
TREE [drive:][path] [/F] [/A]
/F 显示每个文件夹中文件的名称。
/A 使用 ASCII 字符,而不使用扩展字符。
·········································································································
1、显示C:/windwos目录下的目录结构
tree C:/windows
2、显示目录下的目录结构及文件
tree C:/windows /f
5、关机命令 shutdown
shutdown 操作计算机的电源
···········································································································
E:\>shutdown /?
用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f]
[/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]
没有参数 显示帮助。这与键入 /? 是一样的。
/? 显示帮助。这与不键入任何选项是一样的。
/i 显示图形用户界面(GUI)。
这必须是第一个选项。
/l 注销。这不能与 /m 或 /d 选项一起使用。
/s 关闭计算机。
/sg 关闭计算机。在下一次启动时,如果启用了
自动重启登录,则将自动登录并锁定上次交互用户。
登录后,重启任何已注册的应用程序。
/r 完全关闭并重启计算机。
/g 完全关闭并重启计算机。重新启动系统后,
如果启用了自动重启登录,则将自动登录并
锁定上次交互用户。
登录后,重启任何已注册的应用程序。
/a 中止系统关闭。
这只能在超时期间使用。
与 /fw 结合使用,以清除任何未完成的至固件的引导。
/p 关闭本地计算机,没有超时或警告。
可以与 /d 和 /f 选项一起使用。
/h 休眠本地计算机。
可以与 /f 选项一起使用。
/hybrid 执行计算机关闭并进行准备以快速启动。
必须与 /s 选项一起使用。
/fw 与关闭选项结合使用,使下次启动转到
固件用户界面。
/e 记录计算机意外关闭的原因。
/o 转到高级启动选项菜单并重新启动计算机。
必须与 /r 选项一起使用。
/m \\computer 指定目标计算机。
/t xxx 将关闭前的超时时间设置为 xxx 秒。
有效范围是 0-315360000 (10 年),默认值为 30。
如果超时期限大于 0,则 /f 参数为
/f 参数。
/c "comment" 注释重启或关闭的原因。
最多允许 512 个字符。
/f 强制关闭正在运行的应用程序而不事先警告用户。
当大于 0 的值为
时,隐含 /f 参数 则默示为 /f 参数。
/d [p|u:]xx:yy 提供重新启动或关闭的原因。
p 指示重启或关闭是计划内的。
u 指示原因是用户定义的。
如果未指定 p 和 u,则
重新启动或关闭 是计划外的。
xx 是主要原因编号(小于 256 的正整数)。
yy 是次要原因编号(小于 65536 的正整数)。
此计算机上的原因:
(E = 预期 U = 意外 P = 计划内,C = 自定义)
类别 主要 次要 标题
U 0 0 其他(计划外)
E 0 0 其他(计划外) ………………………………
···········································································································
1、
6、任务计划命令 schtasks (没学会)
schtasks ::和linux中的crontab类似
········································································································
用法:schtasks /?
C:\Windows\System32>schtasks.exe /?
SCHTASKS /parameter [arguments]
描述:
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任
务。
参数列表:
/Create 创建新计划任务。
/Delete 删除计划任务。
/Query 显示所有计划任务。
/Change 更改计划任务属性。
/Run 按需运行计划任务。
/End 中止当前正在运行的计划任务。
/ShowSid 显示与计划的任务名称相应的安全标识符。
/? 显示此帮助消息。
Examples:
SCHTASKS
SCHTASKS /?
SCHTASKS /Run /?
SCHTASKS /End /?
SCHTASKS /Create /?
SCHTASKS /Delete /?
SCHTASKS /Query /?
SCHTASKS /Change /?
SCHTASKS /ShowSid /?
··········································································································
1、
7、变量 set
set 显示和设置变量值
用法:
·········································································································
C:\Windows\System32>set /?
显示、设置或删除 cmd.exe 环境变量。
SET [variable=[string]]
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
要显示当前环境变量,键入不带参数的 SET。
如果命令扩展被启用,SET 会如下改变:
可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
SET 命令已使用的名称的所有变量的值。例如:
SET P
会显示所有以字母 P 打头的变量
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL
设置成 1。
SET 命令不允许变量名含有等号。
在 SET 命令中添加了两个新命令行开关:
SET /A expression
SET /P variable=[promptString]
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符
如果你使用任何逻辑或取余操作符, 你需要将表达式字符串用
引号扩起来。在表达式中的任何非数字字符串键作为环境变量
名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为
零。这使你可以使用环境变量值做计算而不用键入那些 % 符号
来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,
那么它显示该表达式的最后值。该分配的操作符在分配的操作符
左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制
有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022
相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,
因为 8 和 9 不是有效的八进制位数。(& )
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入
行之前,显示指定的 promptString。promptString 可以是空的。
环境变量替换已如下增强:
%PATH:str1=str2%
会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
也可以为扩展名指定子字符串。
%PATH:~10,5%
会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。
%PATH:~-10%
会提取 PATH 变量的最后十个字符。
%PATH:~0,-2%
会提取 PATH 变量的所有字符,除了最后两个。
终于添加了延迟环境变量扩充的支持。该支持总是按默认值被
停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。
请参阅 CMD /?
考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境
变量扩充是很有用的,而不是执行的时候。以下例子说明直接
变量扩充的问题:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)
不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中
的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个
复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和
"after",这两者永远不会相等。同样,以下这个例子也不会达到
预期效果:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
原因是,它不会在目前的目录中建立一个文件列表,而只是将
LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在
FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量
是空的。因此,我们真正执行的 FOR 循环是:
for %i in (*) do set LIST= %i
这个循环继续将 LIST 设成找到的最后一个文件。
延迟环境变量扩充允许你使用一个不同的字符(惊叹号)在执行
时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面
例子写成以下所示,以达到预期效果:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变
量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些
名称中任何一个明确定义变量,那个定义会替代下面描述的动态定义:
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
%HIGHESTNUMANODENUMBER% - 扩展到此计算机上的最高 NUMA 节点号。
········································································································
8、文件查看命令 dir
dir 查看文件的命令
·································································
C:\Windows\System32>dir /?
显示目录中的文件和子目录列表。
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
[drive:][path][filename]
指定要列出的驱动器、目录和/或文件。
/A 显示具有指定属性的文件。
属性 D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 重新分析点 O 脱机文件
- 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
禁用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
排列顺序 N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 反转顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/R 显示文件的备用数据流。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域
时间段 C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 以四位数字显示年份
可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。
·································································
1、显示目录下的
隐藏文件
dir E:\工作 /ah
目录文件
dir E:\工作 /ad
只读文件
dir E:\工作 /ar
系统文件
dir E:\工作 /as
2、显示目录 并排列顺序
按照名称排序(字母顺序)
dir E:\工作 /on
按照大小排序(从小到大)
dir E:\工作 /os
按照扩展名排序(字母顺序)
dir E:\工作 /oe
按照日期时间(从先到后)
dir E:\工作 /od
#“-” 反转顺序 例如 dir E:\工作 /o-s 本来是按照大小从小到大排序的,加了-后,就变成从大到小降序了
3、显示文件所有者
dir E:\工作 /q
4、显示所有目录及子目录中的所有文件,包括隐藏文件
dir E:\工作 /s
5、显示文件各种时间
显示文件创建时间
dir E:\工作 /tc
显示文件上次访问时间
dir E:\工作 /ta
显示文件上次写入时间
dir E:\工作 /tw
9、创建目录 mkdir/md
mkdir md ::创建目录 md是mkdir的缩写
用法:
···················································
E:\Python_file>mkdir /?
创建目录。
MKDIR [drive:]path
MD [drive:]path
如果命令扩展被启用,MKDIR 会如下改变:
如果需要,MKDIR 会在路径中创建中级目录。例如: 假设 \a 不
存在,那么:
mkdir \a\b\c\d
与:
mkdir \a
chdir \a
mkdir b
chdir b
mkdir c
chdir c
mkdir d
相同。如果扩展被停用,则需要键入 mkdir \a\b\c\d。
···················································
1、批量层级创建目录
mkdir no1\no2\no3
这里就创建了三个目录,no2在no1里,no3在no2里
扩展 进入目录(chdir) 删除目录(rd)
进入目录:
chdir :cd是chdir的缩写
只输入cd 后面不跟路径就会显示当前所在位置,作用和linux中的pwd一样
删除目录:
rd / rmdir
rd和rmdir效果是一样的,rd是rmdir的缩写
这两个命令只会删除空目录,如果目录中有内容是不会删除的
/s :删除除目录本身外,还会删除目录下的所有文件和目录
/q :安静模式,就是无交互强制删除
rd filename /s /q :这条命令就相当于linux的rm -rf,无交互删除所有目录
10、重命名 ren
ren 重命名目录或文件 ren是rename的缩写,两个命令都可以重命名操作
·······································
E:\Python_file>ren /?
重命名文件。
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
请注意,你不能为目标文件指定新的驱动器或路径。
·······································
用法:
ren E:\test test1
ren test1 test2
11、拷贝 copy
copy 拷贝
·····································
E:\>copy /?
将一份或多份文件复制到另一个位置。
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]
source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,
尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件
的提示。
/-Y 使用确认是否要覆盖现有目标文件
的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制
到目标而不是源链接指向的实际文件。
命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
这可能会被命令行上的 /-Y 替代。除非 COPY
命令是在一个批处理脚本中执行的,默认值应为
在覆盖时进行提示。
要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或 file1+file2+file3 格式)。
·····································
12、删除文件 del
del ::删除文件的命令
················································
E:\>del /?
删除一个或多个文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names 指定一个或多个文件或者目录列表。
通配符可用来删除多个文件。
如果指定了一个目录,该目录中的所
有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 删除所有子目录中的指定的文件。
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据属性选择要删除的文件
属性 R 只读文件 S 系统文件
H 隐藏文件 A 准备存档的文件
I 无内容索引文件 L 重新分析点
O 脱机文件 - 表示“否”的前缀
如果命令扩展被启用,DEL 和 ERASE 更改如下:
/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。
················································
13、文件剪切命令 move
E:\>del /?
删除一个或多个文件。
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names 指定一个或多个文件或者目录列表。
通配符可用来删除多个文件。
如果指定了一个目录,该目录中的所
有文件都会被删除。
/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 删除所有子目录中的指定的文件。
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据属性选择要删除的文件
属性 R 只读文件 S 系统文件
H 隐藏文件 A 准备存档的文件
I 无内容索引文件 L 重新分析点
O 脱机文件 - 表示“否”的前缀
如果命令扩展被启用,DEL 和 ERASE 更改如下:
/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。
14、用户管理命令 net user
E:\>net user /help
此命令的语法是:
NET USER
[username [password | *] [options]] [/DOMAIN]
username {password | *} /ADD [options] [/DOMAIN]
username [/DELETE] [/DOMAIN]
username [/TIMES:{times | ALL}]
username [/ACTIVE: {YES | NO}]
NET USER 将创建并修改计算机上的用户帐户。在不使用命令开关的情况下,
将列出计算机的用户帐户。用户帐户信息存储在用户帐户数据库中。
username 为可添加、删除、修改或查看的用户帐户的名称。用户帐户名称
最多可以有 20 个字符。
password 指定或更改用户帐户的密码。密码的长度必须符合 NET ACCOUNTS
命令的 /MINPWLEN 选项所设置的最小长度。
最多可以有 14 个字符。
* 生成密码提示。在密码提示下键入密码时,将不会显示密码。
/DOMAIN 在当前域的域控制器上执行此操作。
/ADD 向用户帐户数据库添加用户帐户。
/DELETE 从用户帐户数据库删除用户帐户。
选项 如下所示:
选项 描述
--------------------------------------------------------------------
/ACTIVE:{YES | NO} 激活或取消激活帐户。如果该帐户处于非激活状态,
用户将无法访问服务器。默认设置为“YES”。
/COMMENT:"text" 提供有关用户帐户的描述性注释。请将文本用引号
括起来。
/COUNTRYCODE:nnn 使用操作系统国家/地区代码执行指定的语言文件,
以显示用户帮助和错误消息。值 0 表示使用默认
的国家/地区代码。
/EXPIRES:{date | NEVER} 如果设置了日期,可导致帐户过期。
NEVER 将帐户设置为无时间限制。
过期日期采用格式 mm/dd/yy(yy)。
月份可以是一个数字、完整字母拼写,
或使用三个字母的缩写。年份可以使用两位数字
或四位数字。使用斜线(/)(不留空格)
将日期的各个部分隔开。
/FULLNAME:"name" 用户的全名(而不是用户名)。请将该名称用引号
括起来。
/HOMEDIR:pathname 用户的主目录设置路径。该路径必须存在。
/PASSWORDCHG:{YES | NO} 指定用户是否可以更改其密码。默认设置
为“YES”。
/PASSWORDREQ:{YES | NO} 指定用户帐户是否必须拥有密码。
默认设置为“YES”。
/LOGONPASSWORDCHG:{YES|NO} 指定用户是否应在下次登录时更改其密码。
默认设置为“NO”。
/PROFILEPATH[:path] 为用户登录配置文件设置路径。
/SCRIPTPATH:pathname 用户登录脚本的位置。
/TIMES:{times | ALL} 登录小时数。TIMES 表示为
day[-day][,day[-day]],time[-time][,time
[-time]],增量限制为 1 小时。
日期可以是完整拼写,也可以是缩写。
小时可以是 12 或 24 小时表示法。对于
12 小时表示法,请使用 am、pm、a.m. 或
p.m。ALL 表示用户始终可以登录,
空白值表示用户始终不能登录。使用逗号将日期和时
间隔开,使用分号将多个日期和时间隔开。
/USERCOMMENT:"text" 允许管理员添加或更改帐户的用户注释。
/WORKSTATIONS:{computername[,...] | *}
列出用户可用于登录到网络的计算机,最多为八台。
如果 /WORKSTATIONS 没有列表,或其列表为 *,
则用户可以通过任何计算机登录到网络。
NET HELP 命令 | MORE 显示帮助内容,一次显示一屏。
15、用户组管理命令 net localgroup
net localgroup
用法:
···············································
E:\>net localgroup /help
此命令的语法是:
NET LOCALGROUP
[groupname [/COMMENT:"text"]] [/DOMAIN]
groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN]
groupname name [...] {/ADD | /DELETE} [/DOMAIN]
NET LOCALGROUP 修改计算机上的本地组。使用时如果没有选项,它将显示计算机上的本
地组。
groupname 为要添加、扩展和删除的本地组的名称。仅提供用以查看用户或本地
组中全局组的组名。
/COMMENT:"text" 为新组或现有组添加注释。将文本用引号括起来。
/DOMAIN 在当前域的域控制器上执行操作。否则,在本地工作站上执行该操作
。
name [ ...] 列出添加到本地组或从中删除的一个或多个用户名或组名。用空格将
多个条目隔开。名称可以是用户或全局组,但不能是其他本地组。如
果用户来自其他域,则用域名作为用户名的开始(例如,SALES
\RALPHR)。
/ADD 将组名或用户名添加到本地组。必须为利用该命令添加到本地组的用
户或全局组建立帐户。
/DELETE 将组名或用户名从本地组删除。
···············································
if语句格式:
if 条件 (
满足条件执行语句
) else (
不满足条件执行语句
)
·············································
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
用法:
@echo off
if "A" equ "A" echo equ ok A等于A满足
if "A" == "A" echo equ ok
if /I "A" equ "a" echo equ ok 不区分大小写
if 100 equ 100 echo equ ok
if 100 == 100 echo equ ok
if %errorlevel%==""
::%errorlevel%是判断上一条命令是否执行成功,成功返回0,失败返回1
···············································
判断变量是否为一个值
@echo off
::if-else结构
set a=%1%
if %a% == hello (echo ok) else (echo no)
pause > nul
判断文件是否存在 exist
@echo off
::if判断文件是否存在
chcp 65001 >nul
if exist E:\工作\记事本.sh2 (echo yes
) else (echo no)
pause > nul
比大小
@echo off
::if判断输入变量的大小
chcp 65001 >nul
::输入第一个变量no1
set /p no1=no1=
::输入第二个变量no2
set /p no2=no2=
::判断
if %no1% gtr %no2% (
echo no1大
) else (
if %no1% equ %no2% (
echo no1等于no2
) else (
echo no2大)
)
pause > nul
17、for语句
删除指定目录下所有txt文件
@echo off
chcp 65001>nul
for /d %%a in (test\*) do dir %%a\*.txt && del %%a\*.txt /a && echo 已删除所有*.txt文件
pause>nul
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
FOR /L %variable IN (start,step,end) DO command [command-parameters]
for /l %%a in (1,1,5) do mkdir %%a ::批量创建1-5文件夹
for /l %%a in (50,1,60) do ping -n 2 -w 60 123.56.23.%%a > nul && echo 123.56.23.%%a
检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
for /r "F:\桌面\test\新建文件夹\" %%a in (*.txt) do echo %%a ::寻找目录下所有.txt文件
测试ip是否通
@echo off
chcp 65001>nul
set /p nnn=按回车开始……
set ip=%1%
for /l %%a in (50,1,52) do ping -n 2 -w 60 %ip%.%%a >nul && echo %ip%.%%a
echo 回车退出……
pause>nul
18、goto跳转
:test
mkdir 1
cd 1
goto test
这样几句代码就可以实现反复循环创建目录1
goto 是会在执行完上面的命令后,跳转到:test部分,就会反复执行
可以配合if使用
@echo off
if %os%==Windows_NT goto windows
if %os%==Linux goto linux
:windows
echo os is windows
goto end
:linux
echo os is not windows
goto end
:end
pause>nul
19、例
@echo off
chcp 65001>nul
cls
:adm
echo 1:用户查询
echo 2:进程查询
set /p xt=请选择(1/2):
if %xt%==1 goto user
if %xt%==2 goto jincheng
echo 请输入正确选择
goto adm
:user
set /p username=请输入用户名:
net user %username%
goto end
:jincheng
tasklist
echo.
echo.
echo 1通过image_name查询
echo 2通过PID查询
set /p b=请选择(1/2):
if %b%==1 goto imagename
if %b%==2 goto pid
goto jincheng
:imagename
set /p image=请输入服务名例如(哔哩哔哩.exe):
tasklist /fi "imagename eq %image%"
goto end
:pid
set /p pids=请输入pid号:
tasklist /fi "pid eq %pids%"
goto end
:end
pause>nul
第三天
20、收集
https://www.toutiao.com/article/7048462948905648676/
https://www.hackbase.net/script/bat/
这有帮助吗?