[学习笔记]Windows CMD/bat

基础知识

命令帮助的符号解释

NotationDescription
Text without brackets or braces必须要输入的命令
<Text inside angle brackets>必须要提供值的占位符
[Text inside square brackets]可选项
{Text inside braces}必选项集合,必选其中一项
Vertical bar (|)互斥项分隔符,必选其中一项
Ellipsis (…)重复使用项

特殊字符的意义与作用

  • @
    @其后接一条命令,在批处理中,以@作为前缀的命令不会回显
@ipconfig

在这里插入图片描述

ipconfig

在这里插入图片描述

.bat.cmd 文件中体现,当然一般批处理文件第一行

@echo off

就会预先关闭所有命令的回显。

  • %

变量引用:

echo %windir%

在这里插入图片描述

只有当%%中间为已定义的临时变量或全局(系统)变量时才会作为变量引用符号,否者在echo命令中将视作普通字串。

取模运算:
set命令中启用\a选项将开启表达式选项

在这里插入图片描述

注意在命令行中单个%即可,在批处理中需要两个自身转义,即%%

在这里插入图片描述在这里插入图片描述

这里输出num的值为16的原因是该批处理未获得第五个参数,即空,故输出16,通过控制台调用传参示例:

在这里插入图片描述

这是变量引用一种特殊形式,%0表示批处理文件本身,1~9表示接收的参数索引。

转义%:
在批处理文件中转义本身,命令行中echo均视作普通字符
在这里插入图片描述

  • :
    定义标签段:
    该符号在行头定义标签段,:后即为标签段的标签名,如在test.cmd中
goto:third

直接跳过second而跳转到third执行。
在这里插入图片描述
set命令扩展-截取和替换

在这里插入图片描述

环境变量替换已如下增强:
%PATH:str1=str2%
会扩展 PATH 环境变量,用 “str2” 代替扩展结果中的每个 “str1”。
要有效地从扩展结果中删除所有的 “str1”,“str2” 可以是空的。
“str1” 可以以星号打头;在这种情况下,“str1” 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
也可以为扩展名指定子字符串。
%PATH:~10,5%
会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。
%PATH:~-10%
会提取 PATH 变量的最后十个字符。
%PATH:~0,-2%
会提取 PATH 变量的所有字符,除了最后两个。

  • ::
    该符号在批处理中为注释符,类似于rem,但有的特殊字符(重定向符号和管道符号)在rem中仍会执行,而所有:: 后的语句都将被解释器忽略,且::在大量语句中显然比rem更加醒目,因此推荐使用::注释。

  • ~
    set语句: 参考set命令帮助中使用~的部分
    for语句: 参考for命令帮助中的命令增强部分

  • >
    重定向符号,当将输出内容重定向到文件时,>表示覆盖输出到文件,>>表示追加输出到文件。

重定向
1为标准输出stdout、2为标准错误stderr。系统默认%值是1,也就是1>,而1>可以简写为>,也就是标准输出默认为>。stdout的默认目标是终端,stderr的默认目标为也是终端。

句柄数字代号描述
STDIN0键盘输入
STDOUT1输出到命令提示符窗口
STDERR2错误输出到命令提示符窗口
UNDEFINED3-9句柄由应用程序单独定义,由各工具特有
重定向到其它句柄通过&连接句柄代号
#将标准错误重定向到标准输出
2>&1

利用管道符|实现将标准输出重定向到下一个命令的标准输入

tasklist | findstr "explorer"

在这里插入图片描述

示例表示将tasklist命令执行的结果作为findstr命令的输入,即在其结果中查找explorer进程。

  • <
    从文件而不是从键盘或句柄读入命令输入。<&表示从一个句柄读取输入并将其写入到另一个句柄输出中。

  • ^
    转义字符,用来转义其他特殊字符。
    在这里插入图片描述

  • | & || &&
    逻辑执行符

|直接执行后面的语句;

在这里插入图片描述

|| 如果前置语句执行出错,则执行后面的语句,前面的语句只能为假;
在这里插入图片描述

& 如果前置语句为假,则直接执行后面的语句,前置语句可真可假;

在这里插入图片描述

&& 如果前置语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。

在这里插入图片描述

命令详解及实用场景

点击前往官方命令文档

终端属性命令

  • chcp更改当前活动页代码
 chcp 65001#修改当前活动页为UTF-8

十进制码值 对应编码名称
950 繁体中文
65001 UTF-8代码页
936 简体中文默认的GBK
437 MS-DOS 美国英语

  • color 改变控制台颜色
color 0A #将控制台颜色改为黑色背景,绿色前景(字体)

背景 前景
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色

  • title 设置命令提示窗口的窗口标题
#设置窗口标题为mycmd
title mycmd

基本命令

  • 查看历史命令
#或使用快捷键F7
doskey/HISTORY
  • where 查看命令所在位置
where findstr
#C:\Windows\System32\findstr.exe
  • cls 清除屏幕
  • echo 回显消息
echo %cd% #显示当前工作目录
echo %errorlevel% #上一次命令返回值

echo的字符串若包含保留字符(|、>等)需使用^转义。

内置常量

%ALLUSERSPROFILE% : 列出所有用户Profile文件位置。
%APPDATA% : 列出应用程序数据的默认存放位置。
%CD% : 列出当前目录。
%CLIENTNAME% : 列出联接到终端服务会话时客户端的NETBIOS名。
%CMDCMDLINE% : 列出启动当前cmd.exe所使用的命令行。
%CMDEXTVERSION% : 命令出当前命令处理程序扩展版本号。
%CommonProgramFiles% : 列出了常用文件的文件夹路径。
%COMPUTERNAME% : 列出了计算机名。
%COMSPEC% : 列出了可执行命令外壳(命令处理程序)的路径。
%DATE% : 列出当前日期。
%ERRORLEVEL% : 列出了最近使用的命令的错误代码。
%HOMEDRIVE% : 列出与用户主目录所在的驱动器盘符。
%HOMEPATH% : 列出用户主目录的完整路径。
%HOMESHARE% : 列出用户共享主目录的网络路径。
%LOGONSEVER% : 列出有效的当前登录会话的域名控制器名。
%NUMBER_OF_PROCESSORS% : 列出了计算机安装的处理器数。
%OS% : 列出操作系统的名字。(Windows XP 和 Windows 2000 列为 Windows_NT.)
%Path% : 列出了可执行文件的搜索路径。
%PATHEXT% : 列出操作系统认为可被执行的文件扩展名。
%PROCESSOR_ARCHITECTURE% : 列出了处理器的芯片架构。
%PROCESSOR_IDENTFIER% : 列出了处理器的描述。
%PROCESSOR_LEVEL% : 列出了计算机的处理器的型号。
%PROCESSOR_REVISION% : 列出了处理器的修订号。
%ProgramFiles% : 列出了Program Files文件夹的路径。
%PROMPT% : 列出了当前命令解释器的命令提示设置。
%RANDOM% : 列出界于0 和 32767之间的随机十进制数。
%SESSIONNAME% : 列出连接到终端服务会话时的连接和会话名。
%SYSTEMDRIVE% : 列出了Windows启动目录所在驱动器。
%SYSTEMROOT% : 列出了Windows启动目录的位置。
%TEMP% and %TMP% : 列出了当前登录的用户可用应用程序的默认临时目录。
%TIME% : 列出当前时间。
%USERDOMAIN% : 列出了包含用户帐号的域的名字。
%USERNAME% : 列出当前登录的用户的名字。
%USERPROFILE% : 列出当前用户Profile文件位置。
%WINDIR% : 列出操作系统目录的位置。

  • exit 退出 CMD.EXE 程序
  • dir 显示目录中的文件和子目录列表
dir /A:[D|H|S] #显示指定属性的文件
dir /Q         #显示文件所有者。
dir /S /B C:\index.asp #在C盘下搜索index.asp文件

D目录 H 隐藏文件 S 系统文件
/B 使用空格式(没有标题信息或摘要)。(只显示路径和文件名)
/S 显示指定目录和所有子目录中的文件。

  • tree 以图形显示驱动器或路径的文件夹结构
tree D:\program files /F #显示D:\program files目录中每个文件夹中文件的名称
  • cd 进入目录
D: 						#进入D盘
cd C:\program files\ 	#进入指定目录
cd /D D:\Program files  #进入D盘
#注意/D命令选项的使用,cd命令是可以跨盘符的!

选项语法:
%~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到一个完全合格的路径名
%~dI - 仅将 %I 扩展到一个驱动器号
%~pI - 仅将 %I 扩展到一个路径
%~nI - 仅将 %I 扩展到一个文件名
%~xI - 仅将 %I 扩展到一个文件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到文件的文件属性
%~tI - 将 %I 扩展到文件的日期/时间
%~zI - 将 %I 扩展到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩展到
空字符串

#批处理中使用扩展语法,d标识驱动器号,p标识路径,0标识当前文件
#进入当前脚本执行的目录
cd /D %~dp0 

可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩展到一个驱动器号和路径
%~nxI - 仅将 %I 扩展到一个文件名和扩展名
%~fsI - 仅将 %I 扩展到一个带有短名的完整路径名
%~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩展到类似输出线路的 DIR

  • pushd 进入目录
  • popd 退出目录

以上命令配合使用,以入栈的形式进入目录,可直接跨盘符。

  • del 删除一个或多个文件
    该命令删除的文件不会存在于回收站中。
#删除file1文件
del file1 		
#删除目录及目录下的所有文件
del directory 	
#使用通配符删除所有后缀是txt的文件
del *.txt 	
#强制删除file1文件	
del /F file1 	
#通过文件属性删除文件,attrib同dir命令中的属性表示
del /A[:attrib] 
  • type 显示文本文件的内容。
#显示txt.txt文本文件的内容
type txt.txt
  • find 在文件中搜索字符串
#在文件file1中不区分大小写搜索bsd,并显示包含字符串所在的行及行号
find /N /I "bsd" file1 

/N 显示行号。
/I 搜索字符串时忽略大小写。

  • attrib 显示或更改文件属性
#查看E:\foo文件属性
attrib E:\foo
#为E:\foo文件夹添加只读属性,并匹配子目录
attrib +R E:\foo \S \D
#注意
#仅是匹配同名子目录,而不是递归该目录下的所有子目录及文件
  • date 显示或设置日期
date /T #显示当前日期,并且不要求用户输入新的日期
  • rename/ren 重命名文件

rename [drive:][path]filename1 filename2.

  • md/mkdir 创建目录

MKDIR [drive:]path
MD [drive:]path

  • rd/rmdir 删除一个目录
rd /S /Q C:\aDirectory #删除这个目录树,并且不要求用户确认

/S 除目录本身外,还将删除指定目录下的所有子目录和
文件。用于删除目录树。
/Q 安静模式,带 /S 删除目录树时不要求确认

  • copy 复制一个或多个文件到指定位置

  • move 移动文件并重命名文件和目录

要移动至少一个文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,…] destination
要重命名一个目录:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
/Y 取消确认覆盖一个现有目标文件的提示。
/-Y 对确认覆盖一个现有目标文件发出提示。

  • tasklist 显示在本地或远程机器上当前运行的进程列表
tasklist /FI "STATUS eq running" #使用过滤器,输出状态等于running的进程

/FO format 指定输出格式。有效值: “TABLE”、“LIST”、“CSV”。

/NH 指定列标题不应该在输出中显示。只对 “TABLE” 和 “CSV” 格式有效。

eq–EQUAL 等于
ne–NOT EQUAL 不等于
gt–GREATER THAN 大于 
lt–LESS THAN 小于
ge–GREATER THAN OR EQUAL 大于等于
le–LESS THAN OR EQUAL 小于等于

  • taskkill 按照进程PID或映像名称终止任务
taskkill /PID 5566 /T /F #强制中止进程号为5566的进程以及由其启动的子进程
taskkill /PID 789 /PID 889 #中止PID为789和889的任务

/T 终止指定的进程和由它启用的子进程。
/F 指定强制终止进程。

  • start 启动一个单独的窗口以运行指定的程序或命令
start cmd #新窗口打开cmd
start mspaint #打开画图程序
start calc #打开计算器
  • shutdown 关闭/注销计算机
shutdown -s -t 1000 #定时1000s关闭计算机,默认30s
shutdown -a #取消定时,该命令只能在定时启用时有效
shutdown -r #重启计算机
  • systeminfo 显示本地或远程机器的操作系统配置的信息
    其中系统型号就是主板型号
    在这里插入图片描述

  • ver 显示windows内部版本
    该命令适用替换winver命令不需要弹窗的情况

高级命令

  • forfiles 指定(一组)文件执行命令
#对2022年8月20号之后新建的exe文件进行搜索
forfiles/m *.exe/d+2022/8/20/s/p c:\ /c "cmd/c echo @path @fdate @ftime" 2>null
  • mklink 创建软连接(快捷方式)
MKLINK [[/D] | [/H] | [/J]] Link Target
  • sort 排序
#实现对文本内容升序排序
sort < temp.txt

/R[EVERSE] 颠倒排列顺序,即,从 Z 到 A,再从 9 到 0

  • findstr find 在文本中搜索字符串
findstr /F:temp.txt /C:encode #从temp.txt中读取文件列表,并在这些文件中搜索字符串encode
  • xcopy 复制
#讲源文件source复制到目标目录destination
xcopy source destination
#复制目录结构(当目标不存在时默认目标为目录并创建,包括空目录,不包含任何目录内文件)
xcopy dir1 dir11 /e/i/t
#管理员运行:静默递归复制目录中的文件(包括文件属性,ACL,系统文件,隐藏文件,非空目录)
xcopy dir1 dir11 /s/q/h/k/o/y

目录路径需要删除最后的\,否则会产生无效路径的错误。
有些操作需要管理员权限执行,否则会产生拒绝访问的错误。

/S 复制目录和子目录,不包括空目录。
/E 复制目录和子目录,包括空目录。
与 /S /E 相同。可以用来修改 /T
/I 如果目标不存在,且要复制多个文件,
则假定目标必须是目录。
/Q 复制时不显示文件名。
/T 创建目录结构,但不复制文件。不
包括空目录或子目录。/T /E 包括
空目录和子目录。
/O 复制文件所有权和 ACL 信息。
/Y 取消提示以确认要覆盖
现有目标文件。

  • net start /net stop 启动/中止服务

net start|stop [service]

net start|stop mysql #启动或停止mysql服务
  • net share 管理文件共享
#列出所有正在共享的项目
net share 
#创建新的共享
#共享名myShare,本地路径C:\myShare,并给commonusr用户授权只读权限
net share myShare=C:\myShare /grant:commonusr,read
#删除共享
net share myShare|C:\myShare /delete 
#注意:
#使用共享名删除时,不会删除本地目录,路径删除时,会删除本地目录
#创建共享时,如不存在本地路径,系统会自动创建本地共享目录
net share myShare /users:3 #限制同时访问共享资源的用户数目为3,无限制为/unlimited
#注意
#文件共享权限和NTFS权限通过交集方式控制文件权限
#将共享权限设置为Everyone,仅设置NTFS权限,即可实现仅通过NTFS权限控制共享权限
  • net user 管理计算机账户
#列出本地账户
net user
#查看Administrator账户的详细信息
net user administrator
#激活|禁用administrator账户
net user administrator /active:yes|no
#添加用户user9527,密码123456
net user user9527 123456 /add
#删除用户
net user user9527 /delete
#修改账户commonusr密码为111111
net user commonusr 111111
  • net localgroup 管理本地组
#列出本地组
net localgroup
#列出管理员组administrators的成员用户
net localgroup administrators
#向管理员组中添加用户user9527和commonusr
#(单用户添加:net localgroup user9527 /add
net localgroup user9527 commonusr /add
#将user9527从管理员组中删除
net localgroup user9527 /delete
  • net use 映射网络磁盘到本地磁盘
#将网络共享映射到本地磁盘F:
#连接到网络共享的用户user9527,密码123456
net use F: \\10.1.1.1\share 123456 /user:user9527
#注意
#F:和\\10.1.1...之间有空格

NET USE
[devicename | *] [\computername\sharename[\volume] [password | *]]
[/USER:[domainname]username]

  • netstat 显示协议统计信息和当前 TCP/IP 网络连接(查看端口状态)
#显示所有连接和侦听的端口,并以数字形式显示
netstat -an
#显示所有连接和侦听的端口,并显示关联的进程PID
netstat -ano
#显示路由表
netstat -r

-a 显示所有连接和侦听端口。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-r 显示路由表。

  • takeown 得到文件访问权
#以管理员身份立即递归获得D:\foo目录的访问权限
takeown /F D:\foo /A /R
#运行过程不进行确认提示
takeown /F D:\foo /R /D Y

如果未指定 /A,文件所有权会将被授予 当前登录的用户。
/A 将所有权给于管理员组,而不是当前用户。
/R 递归: 指示工具运行于指定的目录和子目录里的文件上。
/D 用于抑制确认提示。
当前用户在一个目录里没有“列出文件夹”权限时,使用默认答案。当在子目录里进行递归 (/R) 操作时会发生这种情况。用有效值 “Y” 获取所有权或用 “N” 跳过。

  • icacls/cacls 管理访问控制列表
#存储目录及其子目录的ACL到AclFile文件中,即给该目录的ACL做备份,
#以恢复ACL的恶意篡改,示例E:\foo
#(E:\foo\*则保存foo目录下子项目的ACL,不包括foo目录本身)
icacls E:\foo /save AclFile /T
#恢复文件的ACL
icacls E:\foo /restore AclFile
#重置文件的ACL,用默认的ACL替换当前ACL
icacls E:\foo /reset
#授予用户(组)对文件的完全访问权限,并替换原有权限
icacls E:\foo /grant:r Administrators:F
cacls E:\foo /G Administrators:F
#移除用户(组)对文件的授权,示例Administrator
icacls E:\foo /remove Administrators
cacls E:\foo /E /R Administrators
#注意
#实验证明icacls和cacls中的/T选项效果相同

icacls filename /grant[:r]
如果使用 :r,这些权限将替换以前授予的所有显式权限。
如果不使用 :r,这些权限将添加到以前授予的所有显式权限。
/T 指示在以该名称指定的目录下的所有匹配文件/目录上执行此操作。
cacls
/E 编辑 ACL 而不替换。
/T 更改当前目录及其所有子目录中

图形界面的操作中的相关解释:
禁用继承
禁用从父容器中继承的权限;勾选后可选择复制这些权限,也可选择删除这些权限。
仅将这些权限应用到此容器中的对象和/或容器(T)
勾选后,操作目录下的文件夹获得特殊权限,但该文件夹下的对象不受影响,操作目录下的对象(非文件夹)获得相应权限。
使用可从吃对象继承的权限项目替换所有之对象的权限项目§
勾选后,操作目录下的所有文件、文件夹及其子孙对象的权限均被操作目录的权限替换。

  • fsutil 文件系统实用工具
  • schtasks 管理计算机任务计划
  • chkdsk 磁盘检测工具
#修复磁盘上的错误
chkdsk /F
  • ipconfig 管理IP配置
#打印本机所有网路配置
ipconfig /all
#释放当前适配器的ipv4
ipconfig /release
#更新当前适配器的ipv4
ipconfig /renew
#清除当前dns缓存,该命令可用于尝试修复拥有联网权限却不能打开某个网站的问题
ipconfig /flushdns
  • arp 显示和修改arp表(ip–mac)
#打印arp表
arp -a
#打印指定ip地址的arp表,示例192.168.0.1
arp -a 192.168.0.1
#绑定静态arp
arp -s 192.168.0.1 00-00-00-00-00-00
#清除arp缓存
arp -d
#注意
#在知道网关mac的情况下,(常用实际环境中,无线路由器就是所在局域网的网关)
#通过查看arp表网关对应的mac来判断是否遭受arp欺骗(一种中间人攻击,可导致网络变慢甚至直接断网)
  • ping 探测主机是否联通
#判断与百度是否联通(判断能否上网)
ping www.baidu.com
#ping某台主机直到停止,示例192.168.0.1
ping 192.168.0.1 -t
  • nslookup 域名查询系统
#进入系统
nslookup
#解析www.baidu.com
nslookup www.baidu.com
  • route 操作网络路由表
#打印IPv4路由表
route print -4 
#添加一条路由
route add 192.168.0.0 mask 255.255.255.0 192.168.0.1 METRIC 1 IF 20

METRIC 指定跃点数,例如目标的成本。数值越小路由优先级越高
IF 指定路由的接口号码。接口号码通过打印路由表可查看

  • reg 注册表管理
#添加一条注册表记录
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\UserList" /v administrator /t REG_DWORD /d 0 

/v 值名称
/t 数据类型
/d 数据值

  • setx 创建环境变量
setx /M JAVA_HOME C:\Program Files\Java\jdk1.8.0_181 #设置系统变量
setx path "[new_path];%path%" /M #向系统变量path追加路径

去掉/M选项默认添加到用户变量,使用该选项需要以管理员身份运行。
设置变量后,需要重启cmd环境,才能读取新设置的变量(变量值),从当前cmd环境执行start cmd启动cmd无效。

语法 1:
SETX [/S system [/U [domain]user [/P [password]]]] var value [/M]
语法 2:
SETX [/S system [/U [domain]user [/P [password]]]] var /K regpath [/M]
语法 3:
SETX [/S system [/U [domain]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

  • runas 切换运行用户

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
/user: program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
/smartcard [/user:] program
RUNAS /trustlevel: program

runas /noprofile /user:administrator cmd#使用管理员用户运行cmd
  • for 循环
for /L %i in (1,1,254) do @ping -w 1 -n 1 192.168.1.%i | findstr "TTL="
#利用ping扫描在线主机

在这里插入图片描述批处理文件中变量使用%%i表示。

FOR %variable IN (set) DO command [command-parameters]
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列 1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
ping -w timeout 等待每次回复的超时时间(毫秒)。
ping -n count 要发送的回显请求数。

#从命令的标准输出中读取字符串执行循环体
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和制 表符的
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个 迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号 ,
那么额外的变量将在最后一个符号 解析之后
分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符 串并且一个单
引号字符为文字字符串命令并允许 在 file-set
中使用双引号扩起文件名称。

  • if 条件

实用程序

  • fsutil 文件系统管理工具

---- 支持的命令 ----
8dot3name 8dot3name 管理
behavior 控制文件系统行为
dax Dax 卷管理
dirty 管理卷更改位
file 文件特定命令
fsInfo 文件系统信息
hardlink 硬链接管理
objectID 对象 ID 管理
quota 配额管理
repair 自愈管理
reparsePoint 重分析点管理
storageReserve 存储保留管理
resource 事务性资源管理器管理
sparse 稀疏文件控制
tiering 存储分层属性管理
transaction 事务管理
usn USN 管理
volume 卷管理
wim 透明 wim 托管管理

 fsutil file createNew C:\testfile.txt 1000 #创建大小未1000B的空字符txt文件
  • certutil 证书管理工具
certutil -encode D:\temp.jpg D:\tempencode.txt #使用Base64编码文件并输出
certutil -urlcache -split -f http://192.168.0.100/robert.txt 

-urlcache 显示或删除 URL 缓存条目。
-f 强制提取特定 URL 并更新缓存。
-split 拆分嵌入的 node.js 元素,并保存到文件。
CertUtil [选项] -encode InFile OutFile
将文件编码为 Base64

  • diskpart 磁盘工具
  • chkdsk 磁盘检查修复
  • sfc 扫描系统文件完整性

以上三个工具均与磁盘有关,常用命令如下:

DISKPART> list disk

  磁盘 ###  状态           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  磁盘 0    联机              *** GB  1024 KB        *
  磁盘 1    联机              *** GB  1024 KB        *
chkdsk D: /F #修复D盘上的错误
sfc /scannow #扫描所有保护的系统文件的完整性,并尽可能修复有问题的文件。            
  • wevtutil 事件命令行实用程序
wevtutil cl security #清除系统日志
  • netsh 配置命令工具
netsh wlan show all #显示完整的网络设备和无线信息
netsh advfirewall show privateprofile #显示专用配置文件的属性。

在这里插入图片描述- choice 该工具允许用户从选择列表选择一个项目并返回所选项目的索引

 CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
 CHOICE /T 10 /C ync /CS /D y
 CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
 CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"

/C choices 指定要创建的选项列表。默认列表是 “YN”。

/N 在提示符中隐藏选项列表。提示前面的消息得到显示,
选项依旧处于启用状态。

/CS 允许选择分大小写的选项。在默认情况下,这个工具
是不分大小写的。

/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0
到 9999。如果指定了 0,就不会有暂停,默认选项
会得到选择。

/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选
项指定的一组选择中; 同时,必须用 /T 指定 nnnn。

/M text 指定提示之前要显示的消息。如果没有指定,工具只
显示提示。
注意:
ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选
择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,
该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的
ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0
的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
序排列。

批处理

  • 批处理与命令行语法差异
命令语法命令行用法批处理用法
for命令引用变量%i%%i
  • cmd中的转义字符为^

示例:

set qua="
echo %qua%
"
echo %qua%|findstr "a"
"|findstr "a"
#原本希望在包含引号的字符串中查找字符,但引号后的命令均被视为字符串,利用^转义即可
echo ^%qua%|findstr "^""
"
  • 批处理调试
#暂停执行脚本,并隐藏默认的提示语句
pause>nul
#打印变量(开启延时变量的情况下将%替换为!)
echo %var%
  • 延迟变量扩充
    %var%相当于宏变量直接将值换到命令中,然后执行。!var!则是普通变量,每次可以直接读取内存中的值。
# 开启扩充
 setlocal ENABLEDELAYEDEXPANSION
 #关闭扩充
 setlocal DISABLEDELAYEDEXPANSION
  • for语句单行分割迭代文本处理
set string=%str%
:split
for /f "tokens=1,* delims=;" %%i in ("%string%") do (
  echo %%i
  set string=%%j
)
if not "%string%"=="" goto split
pause
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值