本篇系统梳理了 Windows 命令行中与文件、目录、权限、搜索和安全清理相关的常用命令,涵盖
move、del、ren、echo、type、find/findstr、attrib、takeown、icacls、cipher等工具,并配合实战案例与综合练习,帮助我们从基础使用迈向脚本自动化。
跳转系列目录导航
move – 移动文件或重命名目录
功能介绍
move是命令行的内部命令,主要用于移动文件或文件夹。当源路径和目标路径位于同一盘符时,它既能移动文件,也能移动并重命名文件夹;若仅在原地改名,同样可以实现重命名文件或目录的效果。
注意:
move不能跨盘符移动文件夹,跨盘符只能移动文件。- 若目标是已存在的目录,则源会被移入该目录;若目标是不存在的名称,则执行重命名操作。
语法
move [/y] [/-y] [drive:][path]filename1 [,...] destination[drive:][path]filename1:要移动的一个或多个源文件(支持通配符)。destination:目标路径。可以是目录,也可以是“路径\新文件名”(移动并重命名)。- 当源是一个目录时,
destination可以是新目录名(重命名目录),也可以是已存在的目录(将源目录移入其中),但两者必须处于同一驱动器。
参数详解
| 参数 | 释义 |
|---|---|
/y | 直接覆盖已存在的目标文件,不显示确认提示。 |
/-y | 覆盖已存在的目标文件时弹出确认提示。 |
实战演练
1. 重命名文件
move 名称1.txt 名称2.txt单纯的重命名操作,当然也可以同时移动并重命名。
2. 移动并重命名
move test.txt E:\Demo\Demo.txt如果不改名,仅移动文件,去掉目标路径中的文件名即可,例如:move test.txt E:\Demo\。
3. 重命名目录
move test Demo将test目录改名为Demo。
目录重命名不能与跨目录移动同时进行,这仅适用于文件。
4. 将目录移动到另一个目录
move C:\temp\素材 C:\工作区\归档\注意:源目录和目标目录必须位于同一驱动器,否则操作会失败。
del – 删除文件
功能介绍
del用于删除一个或多个文件。它支持通配符,可按文件名、扩展名或属性筛选批量删除,但不能删除目录。使用del删除的文件默认不会进入回收站,请谨慎操作。
语法
del [/P] [/F] [/S] [/Q] [/A[[:]attributes]] filename参数详解
| 参数 | 释义 |
|---|---|
/P | 删除每个文件前提示确认。 |
/F | 强制删除只读文件。 |
/S | 递归删除所有子目录中匹配的文件(不删除文件夹本身)。 |
/Q | 静默模式,删除时不要求确认。 |
/A[[:]属性] | 按属性筛选删除,如R只读、H隐藏、S系统、A存档。可使用-表示“非”,例如/A:-H表示删除非隐藏文件。 |
实战演练
1. 删除单个文件
del 报告.doc2. 利用通配符批量删除
del *.tmp3. 删除前逐个确认
del /p *.tmp4. 强制删除只读文件
del /f readme.txt5. 递归删除子目录中的指定文件
del /s *.log6. 静默删除所有文件(谨慎!)
del /s /q *.*7. 按属性删除(例如删除所有存档属性的 .bak 文件)
del /A:A *.bak删除所有隐藏文件:del /A:H *.*,保留隐藏文件而删除其他:del /A:-H *.*。
ren – 重命名文件
功能介绍
ren(或rename)专门用于重命名文件或文件夹。它可以修改名称、扩展名,也支持通过通配符批量重命名。
与move的核心区别:ren不能跨驱动器或目录移动文件,目标文件名只能是单纯的新名称,不能包含盘符或路径。
语法
ren [drive:][path]filename1 filename2实战演练
1. 重命名文件
ren 报告.txt 月报.txt2. 重命名扩展名
ren 报告.txt 报告.log3. 批量重命名(利用通配符)
例如,将所有.txt文件改为.doc文件:
ren *.txt *.doc更多高级用法依赖于对通配符*与?的灵活运用。
echo – 输出文本或创建新文件
功能介绍
echo主要用于在控制台显示文本信息,也可结合重定向操作符>或>>来创建新文件或向已有文件追加内容。在批处理脚本中,echo on/off用于控制命令本身的回显状态。
语法
echo [on | off] echo [message] echo.echo.:输出一个空行。>:覆盖输出到文件(若文件不存在则创建)。>>:追加内容到文件末尾。
实战演练
1. 显示一行文本
echo hello, world.2. 查看当前回显状态
echo3. 创建新文件并写入一行内容
echo 初始化配置 > init.log4. 追加内容
echo 新增记录 >> init.log5. 输出空行
echo.6. 输出含有特殊字符的文本
如要输出2 > 1,需使用脱字符^转义:
echo 2 ^> 1type – 显示文件内容 / 创建空文件
功能介绍
type用于在命令行窗口中显示文本文件的内容。它可以一次指定多个文件,并按顺序输出,但不支持通配符。除了查看文件,type还常与重定向组合实现文件合并、创建空文件、追加内容等功能。
语法
type [drive:][path]filename [drive:][path]filename2 ...实战演练
1. 分页显示
type 文件名.txt | moretype本身无分页参数,但可借助管道传给more实现类似/P的分页效果。
2. 文件合并
type 第一部分.txt 第二部分.txt > 完整.txt3. 创建空文件
type nul > 新文件.txt4. 查看单个文件
type readme.txt5. 同时查看多个文件
type 日志1.txt 日志2.txt输出时两个文件内容直接相连,没有分隔标记。
6. 将文件内容追加到另一个文件
type 更新日志.txt >> 完整日志.logfind / findstr – 搜索文件中的文本内容
功能介绍
- find:功能相对简单,支持基本字符串搜索、行计数、显示行号、忽略大小写,适合简单过滤。不支持正则,不递归子目录。
- findstr:更加强大,支持正则表达式、递归搜索、多文件匹配、多种匹配模式,还可从文件读取搜索列表,是命令行下的高级文本搜索利器。
两者常配合管道用于日志分析、脚本过滤和输出重定向。
语法
find
find [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename ...]若未指定文件名,find会从标准输入(管道)读取内容。
findstr
findstr [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] [/G:file] [/A:color] [/OFF[LINE]] strings [[drive:][path]filename ...]filename可使用通配符*和?,/S可递归子目录。
参数详解
find 常用参数
| 参数 | 释义 |
|---|---|
/V | 显示不包含指定字符串的行(反向匹配)。 |
/C | 仅显示包含字符串的行数统计,不输出具体内容。 |
/N | 在每行前显示行号。 |
/I | 忽略大小写。 |
/OFF[LINE] | 不跳过脱机属性文件。 |
findstr 常用参数
| 参数 | 释义 |
|---|---|
/B | 匹配位于行首的模式。 |
/E | 匹配位于行尾的模式。 |
/L | 按字面字符串搜索(不使用正则)。 |
/R | 按正则表达式解释搜索内容(默认)。 |
/S | 递归搜索当前目录及子目录中的文件。 |
/I | 忽略大小写。 |
/X | 打印完全匹配整行的行。 |
/V | 打印不包含匹配的行。 |
/N | 在匹配行前显示行号。 |
/M | 仅打印包含匹配项的文件名(不显示内容)。 |
/O | 在每行前显示字符偏移量。 |
/F:file | 从指定文件中读取要搜索的文件列表。 |
/C:string | 将指定字符串作为字面搜索字符串(即使包含空格)。 |
/G:file | 从文件中读取搜索字符串列表。 |
/A:color | 以指定颜色属性显示匹配行(如0E为黄色)。 |
实战演练
1. 用 find 搜索包含某字符串的行
find "error" app.log2. 用 find 统计匹配行数
find /c "timeout" server.log3. 忽略大小写并显示行号
find /i /n "warning" system.log4. 显示不包含某字符串的行
find /v "DEBUG" app.log5. 递归搜索所有子目录下的文件(findstr)
findstr /s /i "TODO" *.*6. 搜索多个字符串(空格分隔表示“或”关系)
findstr "error warning critical" system.log7. 完全匹配整行
findstr /x "OK" *.*8. 高亮显示匹配内容
findstr /a:0E "error" events.logattrib – 查看或修改文件属性
功能介绍
attrib用于显示、设置或清除文件及目录的四种基本属性:R只读、A存档、S系统、H隐藏。在文件管理、系统维护、病毒清理后恢复文件可见性等场景中不可或缺。
语法
attrib [+R | -R] [+A | -A] [+S | -S] [+H | -H] [drive:][path][filename] [/S [/D]] [/L]- 不带任何参数时,显示当前目录所有文件的属性。
+设置属性,-清除属性。- 支持通配符
*和?。
参数详解
| 参数 | 释义 |
|---|---|
+R/-R | 设置或清除只读属性。只读文件不能被修改或直接删除(del需加/F)。 |
+A/-A | 设置或清除存档属性。常用于备份程序(如xcopy /a、robocopy)判断文件是否已备份。 |
+S/-S | 设置或清除系统属性。具有系统属性的文件在默认文件夹选项中不可见,通常与隐藏属性配合使用。 |
+H/-H | 设置或清除隐藏属性。隐藏文件在资源管理器中默认不显示。 |
/S | 对当前目录及其所有子目录中的匹配文件执行操作(不包含目录本身)。 |
/D | 同时处理目录本身的属性(通常与/S一起使用)。 |
/L | 对符号链接本身(而非其目标)执行操作。 |
实战演练
1. 查看当前目录所有文件的属性
attrib2. 查看特定文件的属性
attrib 重要文档.docx3. 为文件添加只读属性
attrib +R 配置.ini4. 隐藏一个文件
attrib +H x.txt5. 同时添加系统和隐藏属性(彻底隐藏)
attrib +H +S x.txt这种组合使文件在普通显示设置下不可见,也无法被简单删除。
6. 递归清除所有子目录中文件的存档属性
attrib -A /S *.*7. 递归隐藏目录及其内容
attrib +H /S /D D:\备份\不仅隐藏D:\备份下的所有文件,还将子目录本身也设为隐藏。
8. 修复 U 盘病毒隐藏的文件
病毒常将文件属性改为“系统+隐藏”,导致文件看似消失,恢复命令:
attrib -S -H /S /D F:\*.*(假设 U 盘盘符为F:)
takeown – 获取文件所有权
功能介绍
takeown是用于获取文件或文件夹所有权的管理工具。当文件或目录因权限不足无法访问、无法删除,或在安全事件排查中需要强制接管资源时,管理员可通过takeown将自己设置为对象的所有者,从而获得后续修改权限的能力。
该命令必须在具有管理员权限的命令行中运行。
语法
takeown [/F <filename>] [/A] [/R] [/D {Y | N}] [...]参数详解
| 参数 | 释义 |
|---|---|
/F | 必选参数,指定要获取所有权的文件、目录或通配符模式。 |
/A | 将所有权授予本地Administrators组(而非当前用户)。 |
/R | 递归操作,适用于目录及所有子对象。 |
| `/D {Y | N}` |
实战演练
1. 获取单个文件的所有权(归当前用户)
takeown /f "C:\顽固文件.dll"注意:仅获得所有权可能仍无法修改文件,还需要通过icacls赋予完全控制权限。
2. 获取整个目录的所有权并指定给管理员组
takeown /f "C:\敏感数据" /A /R /D Y3. 清理无法删除的病毒文件(典型流程)
takeown /f "D:\病毒.exe" /A icacls "D:\病毒.exe" /grant Administrators:F del /f "D:\病毒.exe"先获取所有权,再授予完全控制权,最后强制删除。
4. 接管系统关键文件用于恢复
takeown /F "C:\Windows\System32\drivers\bad.sys" /A icacls "C:\Windows\System32\drivers\bad.sys" /grant Administrators:F copy good.sys "C:\Windows\System32\drivers\bad.sys"5. 批量获取某类型文件的所有权
takeown /F "C:\Logs\*.log" /A6. 递归接管并隐藏目录(安全存档)
takeown /F "D:\旧档案" /A /R /D Y icacls "D:\旧档案" /inheritance:r /grant:r Administrators:(OI)(CI)F attrib +R +H /S /D "D:\旧档案"先接管权限,再设置仅管理员可访问的 ACL,最后设为只读隐藏,实现安全归档。
7. 排查“访问被拒绝”的文件
- 先查看所有者:
dir /Q "C:\无法访问的文件.txt" - 若必要则获取所有权:
takeown /F "C:\无法访问的文件.txt" - 后续根据需求分配权限。
icacls – 查看和修改文件/目录权限
功能介绍
icacls用于显示、修改、备份和恢复文件与目录的 ACL(访问控制列表)。它是 Windows 下管理 NTFS 权限的核心工具。
语法
icacls name [/参数...]name:文件、目录或通配符路径(可使用*)。- 不带任何参数仅显示该对象的 ACL。
常用操作与参数
| 操作/参数 | 说明 |
|---|---|
icacls name | 显示 ACL,包含账户/组、权限、继承来源等。 |
/grant[:r] <用户>:<权限> | 授予权限。加:r会替换该用户之前所有显式权限;不加则追加。 |
/deny <用户>:<权限> | 拒绝指定权限(优先级高于允许)。 |
| `/remove[:g | :d] <用户>` |
/reset | 重置为继承父目录的默认权限,所有显式设置均被清除。 |
/inheritance:e|d|r | e启用继承,d禁用继承并转换为显式权限,r移除所有继承权限并转为显式权限后禁用继承。 |
/setowner <用户> | 更改所有者(需要相应特权)。 |
/T | 递归遍历所有子目录和文件。 |
/C | 遇到错误继续执行。 |
/Q | 安静模式。 |
/save <文件> | 将 ACL 备份至文件。 |
/restore <文件> | 从备份文件还原 ACL。 |
权限缩写(常用掩码)
| 缩写 | 含义 | 对应基本权限 |
|---|---|---|
F | Full Control | 完全控制 |
M | Modify | 修改 |
RX | Read and Execute | 读取和执行 |
R | Read | 读取 |
W | Write | 写入 |
(OI) | 对象继承(Object Inherit) | 权限应用于此目录中的文件 |
(CI) | 容器继承(Container Inherit) | 权限应用于此目录中的子文件夹 |
(I) | 继承的权限 | 权限来自父目录 |
实战演练
1. 查看文件或目录的完整权限
icacls "C:\Program Files\MyApp\config.ini"2. 授予用户完全控制权限(递归)
icacls shared_folder /grant User1:(F) /T3. 追加读取权限(不影响已有权限)
icacls report.docx /grant "Domain Users":(R)4. 替换特定用户的全部权限
icacls secret.doc /grant:r Admin:(F)5. 拒绝某个用户写入
icacls data /deny Intern:(W) /T6. 删除某个用户的所有权限
icacls project /remove "John.Doe" /T7. 重置权限(恢复父目录继承)
icacls corrupted_folder /reset /T8. 锁定文件夹:清除继承并仅保留管理员权限
icacls secure /inheritance:r /grant:r Admins:(F) /remove "Everyone" /T9. 备份和恢复 ACL
icacls D:\Data\* /save acl_backup.txt /T icacls D:\ /restore acl_backup.txt恢复时请注意路径匹配。
cipher – 显示或覆盖已删除数据
功能介绍
cipher主要用于管理 EFS(加密文件系统),但其最独特的安全功能是通过/W参数覆盖卷上的可用空间,从而彻底擦除已删除文件的数据痕迹,达到反取证目的。
- 加密/解密 NTFS 卷上的文件和目录。
- 显示加密状态。
- 备份 EFS 加密证书和密钥。
- 安全覆写已释放的磁盘空间(防止恢复已删除文件)。
语法
cipher [/E | /D] [/S:directory] [/A] [/I] [/F] [/Q] [/H] [pathname [...]] cipher /W:directory cipher /X[:efsfile] [filename]参数详解
| 参数 | 释义 |
|---|---|
/E | 加密指定目录,此后新添加的文件会被自动加密。 |
/D | 解密指定目录。 |
/S:directory | 对指定目录及所有子目录执行操作。 |
/A | 同时作用于文件和目录。 |
/I | 遇到错误继续执行。 |
/F | 强制对所有指定对象执行加密/解密,即使已处于相应状态。 |
/Q | 安静模式,只输出关键信息。 |
/H | 显示隐藏或系统属性的文件(默认不显示)。 |
/W:directory | 安全擦除:对directory所在卷的所有未使用空间进行三次覆写(0x00 → 0xFF → 随机数),彻底销毁已删除文件的残留数据。 |
/X[:efsfile] | 备份当前用户的 EFS 加密证书和密钥到指定文件。 |
关于cipher /W的重要说明
- 仅擦除空闲空间,不影响现有文件。
directory参数仅用于确定要操作的卷(例如cipher /W:D:\擦除整个 D 盘的空闲空间,而非仅限于某个文件夹)。- 对机械硬盘(HDD)效果显著,符合 NIST 清除标准,能有效防范 Recuva 等恢复工具。
- 对固态硬盘(SSD)无效或效果不可靠:由于 SSD 的磨损均衡和垃圾回收机制,覆写请求可能被重定向到其他物理位置,而原有的敏感数据仍可能保留。要彻底清除 SSD,建议使用厂商提供的安全擦除(Secure Erase)工具。
实战演练
1. 显示当前目录的加密状态
cipher加密的条目前标有E。
2. 加密一个文件夹(标记为加密)
cipher /E /S:"D:\敏感文件"3. 解密文件夹
cipher /D /S:"D:\敏感文件"4. 加密单个文件
cipher /E /A "report.docx"5. 备份 EFS 证书
cipher /X backup.efs重装系统前务必执行并妥善保管此文件。
6. 安全擦除 D 盘已删除数据
cipher /W:D:\此操作耗时较长,取决于磁盘容量和性能,但可永久销毁已删除文件的残余磁信息。
7. 擦除特定文件夹所在卷的空闲空间
cipher /W:"C:\Users\Public"效果与cipher /W:C:\相同。
Windows 权限简单了解
前面我们学习了attrib、takeown、icacls、cipher等与文件权限和安全相关的命令,本节对 Windows 的账户和 NTFS 权限体系做一个简要梳理,帮助你理解这些命令背后的原理。
Windows 账户系统
Windows 账户系统不仅是“用户名+密码”的登录凭证,而是一套完整的身份认证、授权和资源隔离体系。
一、账户的本质:SID
每个账户在系统内部由一个唯一的安全标识符(SID)表示,形如S-1-5-21-...。用户名只是方便阅读的标签,所有权限相关操作(文件 ACL、注册表权限)都记录 SID,因此重命名账户不会丢失权限。
- 查看当前用户的 SID:
whoami /user - 查看所有本地用户的 SID:
wmic useraccount get name,sid
二、账户的主要类型
- 本地账户:仅存在于本机,离线可用。分为管理员(Administrator)、标准用户(Standard User)和来宾(Guest)。
- 微软账户:绑定邮箱,可同步设置,支持 Windows Hello 等无密码登录。
- 域账户:由企业 Active Directory 统一管理,可实现漫游和集中管控。
- 工作/学校账户:基于 Microsoft Entra ID(原 Azure AD),用于云办公和现代设备管理。
三、用户组与权限体系
Windows 使用组来批量管理权限,一个账户可属于多个组。关键内置组:
- Administrators:完全控制。
- Users:标准用户,无法修改系统核心设置。
- Guests:权限极低,默认禁用。
- Backup Operators:可备份和还原文件,无论文件权限。
- Remote Desktop Users:允许远程桌面连接。
权限生效规则:
- 权限累积:用户在各组中的允许权限取并集。
- 拒绝优先:任何一条“拒绝”权限即一票否决,即使其他组允许。
- 显式优先于继承:直接设置的权限优先级高于从父目录继承的权限。
四、用户账户控制(UAC)
管理员账户日常运行时也只以标准权限运行,需要提升权限时(如安装软件、修改系统文件)会弹出 UAC 提示,这是“最小权限原则”的保护措施。
五、用户配置文件
每个账户首次登录时会在C:\Users\下生成以用户名命名的配置文件目录,包含桌面、文档、AppData 等个人数据。
Windows 权限系统(NTFS)
NTFS 文件系统中,每个文件和文件夹都带有一张访问控制列表(ACL),精确控制“谁(用户/组 SID)能做什么(权限掩码)”。
一、核心概念
- 安全描述符:包含所有者、DACL(自主访问控制列表)和 SACL(审核列表)。
- ACE(访问控制条目):每条 ACE 包含主体 SID、允许/拒绝类型、权限掩码。
二、基本权限与高级权限
基本权限(在“属性→安全”中常见):
| 基本权限 | 含义 | 包含的部分高级权限 |
|---|---|---|
| 完全控制 | 所有能力,包括修改权限和取得所有权。 | 所有高级权限 |
| 修改 | 读取、写入、修改内容及删除。 | 读、写、执行、删除 |
| 读取和执行 | 浏览文件夹、运行程序、查看内容。 | 遍历文件夹/执行文件、读取数据、读取属性等 |
| 列出文件夹内容 | 仅限文件夹,可查看目录内容列表。 | 遍历文件夹、读取属性 |
| 读取 | 查看文件内容、复制。 | 读取数据、读取属性、读取扩展属性 |
| 写入 | 新建文件/子文件夹,修改内容。 | 创建文件/写入数据、创建文件夹/附加数据、写入属性 |
高级权限(13 项):在“高级→编辑”中可见,是最小粒度权限,可灵活组合,例如“遍历文件夹/执行文件”、“删除子文件夹及文件”、“更改权限”、“取得所有权”等。
三、权限的来源与继承
- 默认情况下,子对象从父目录继承权限。
- 可通过
/inheritance参数禁用/启用继承,或将继承权限转换为显式权限。 - 显式设置的权限会覆盖继承的权限。
四、权限冲突与生效规则
- 拒绝优先:任何“拒绝”与“允许”冲突时,拒绝一定胜出。
- 权限累积:用户及所属全部组的允许权限是并集。
- 有效权限 = (所有允许的并集) - (任何拒绝)。
- 网络访问时,NTFS 权限与共享权限取交集,最严格者生效。
五、特殊身份与内置组
| 组名 | SID | 意义 |
|---|---|---|
| Everyone | S-1-1-0 | 所有用户,包括匿名(需策略开启)。 |
| Authenticated Users | S-1-5-11 | 所有经过身份验证的用户,不含匿名。 |
| SYSTEM | S-1-5-18 | 操作系统最高本地身份,权限高于 Administrator。 |
| CREATOR OWNER | S-1-3-0 | 可继承“创建者获得完全控制”的模板。常用于公共目录。 |
| OWNER RIGHTS | S-1-3-4 | 代表对象当前的所有者。 |
掌握这些概念后,再回头看attrib、takeown和icacls的实操就会更加清晰。
综合练习
以下练习由浅入深,帮助巩固命令的使用。
1. 目录操作
任务:在 C 盘创建Practice文件夹,进入后创建三个子文件夹,查看树状结构,然后返回上一级。
mkdir Practice cd Practice mkdir Documents Pictures Music # mkdir 可同时创建多个,用空格分隔 tree cd..tree /F可同时显示文件。cd \返回根目录;cd /d D:\Demo\test可跨盘符直接跳转。
2. 文件操作
任务:在 Documents 中创建notes.txt,复制并重命名到 Pictures,删除原文件,查看副本内容。
cd Documents echo 这是我的学习笔记 > notes.txt copy notes.txt ..\Pictures\photo_notes.txt del notes.txt cd ..\Pictures type photo_notes.txtecho与>结合可快速创建文件。copy可在复制时重命名目标文件。
3. 批量操作(进阶)
任务:在 Music 中批量创建文件,搜索特定内容,再整体移动文件。
cd ..\Music echo. > song1.txt # 创建空文件 echo. > song2.txt echo. > song3.txt echo music > song4.txt # 内含 "music" echo. > song5.txt findstr "music" *.txt move *.* ..\Documentsecho. > file创建空文件。move *.* target移动当前目录下所有文件。
4. 权限管理
任务:查看文件属性,设置只读和隐藏,查看 ACL,然后尝试修改(应被拒绝)。
cd ..\Documents attrib song1.txt attrib +h +r song1.txt icacls song1.txt echo 123 > song1.txt # 失败:拒绝访问- 只读文件无法被
echo覆盖,可先attrib -r song1.txt再试。
5. 高级复制
任务:使用robocopy完整复制多层目录结构。
cd C:\ mkdir Source cd Source mkdir a\b\c b\a\b c\a\d d\e\d robocopy . D:\Backup /E # /E 包含空子目录 tree D:\Backup6. 数据备份场景(综合)
任务:备份项目文件夹到外部硬盘,标记为只读,并检查/清除残留数据。
xcopy 源路径 目标路径 /E /I attrib 目标路径\*.* +R cipher /C "目标路径" # 检查是否启用了 EFS 加密 cipher /W 目标路径 # 擦除已删除数据残留(谨慎使用,建议仅对 HDD 操作)7. 系统维护场景
任务:列出 System32 下的 DLL,搜索含 “system” 的文件,获取特定文件所有权和控制权。
dir "C:\Windows\System32\*.dll" findstr /I /M "system" "C:\Windows\System32\*.dll" takeown /F "C:\Windows\System32\target.dll" /A icacls "C:\Windows\System32\target.dll" /grant Administrators:F/M仅显示文件名,便于后续处理。
8. 文件搜索与整理
任务:按类型分类存放文档。
dir /a *.docx dir /a *.pdf mkdir Save\Docx Save\Pdf move 源路径\*.docx Save\Docx move 源路径\*.pdf Save\Pdf/A参数使dir包含隐藏文件,防止遗漏。
9. 批处理脚本:按日期备份(挑战)
功能:创建日期命名的备份文件夹,复制指定目录,记录日志。
将以下代码保存为backup.bat,在管理员 CMD 中执行:backup.bat 源路径 目标根路径。
@echo off setlocal EnableDelayedExpansion if "%~2"=="" ( echo 用法: %~nx0 源路径 备份根路径 pause exit /b 1 ) set "SOURCE_DIR=%~f1" if not exist "%SOURCE_DIR%" ( echo 源目录不存在 exit /b 1 ) set "BACKUP_ROOT=%~f2" :: 获取日期时间(调用 PowerShell 以保证格式统一) for /f "tokens=1,2" %%A in ('powershell -NoProfile -Command "Get-Date -format 'yyyy-MM-dd HH:mm:ss'"') do ( set "DATE_FOLDER=%%A" set "LOG_TIME=%%A %%B" ) set "BACKUP_DEST=%BACKUP_ROOT%\%DATE_FOLDER%" set "LOG_FILE=%BACKUP_ROOT%\backup.log" if not exist "%BACKUP_DEST%" ( mkdir "%BACKUP_DEST%" if errorlevel 1 ( echo %LOG_TIME% - 错误:无法创建备份目录 "%BACKUP_DEST%" >> "%LOG_FILE%" goto :error ) echo %LOG_TIME% - 已创建备份目录 "%BACKUP_DEST%" >> "%LOG_FILE%" ) echo %LOG_TIME% - 开始从 "%SOURCE_DIR%" 复制到 "%BACKUP_DEST%" >> "%LOG_FILE%" robocopy "%SOURCE_DIR%" "%BACKUP_DEST%" /E /COPY:DAT /R:3 /W:5 /NP /LOG+:"%LOG_FILE%" >nul if errorlevel 8 ( echo %LOG_TIME% - 备份失败:robocopy 返回错误码 !errorlevel! >> "%LOG_FILE%" goto :error ) echo %LOG_TIME% - 备份成功,源: "%SOURCE_DIR%" 目标: "%BACKUP_DEST%" >> "%LOG_FILE%" echo 备份成功,日志文件: "%LOG_FILE%" endlocal exit /b 0 :error echo 备份失败,日志文件: "%LOG_FILE%" endlocal exit /b 1提示:如果脚本包含中文,建议保存为ANSI编码,否则在命令行中可能显示乱码。
10. 安全清理脚本(管理员运行)
功能:删除%TEMP%中所有.tmp文件,可选cipher擦除空闲空间,修复写入权限。
保存为cleanup.bat,右键“以管理员身份运行”。
@echo off setlocal EnableDelayedExpansion :: 管理员权限检查 net session >nul 2>&1 if errorlevel 1 ( echo 错误:此脚本必须以管理员身份运行! pause exit /b 1 ) echo 正在进行初始化... set "LOG_FILE=%~dp0cleanup_log.txt" set "TEMP_DIR=%TEMP%" for /f "tokens=1,2" %%A in ('powershell -NoProfile -Command "Get-Date -format 'yyyy-MM-dd HH:mm:ss'"') do set "LOG_TIME=%%A %%B" echo %LOG_TIME% - 安全清理脚本启动(管理员) >> "%LOG_FILE%" :: 检查临时文件夹写入权限 set "TEST_FILE=%TEMP_DIR%\perm_test_%random%.tmp" echo. 2>nul > "%TEST_FILE%" if exist "%TEST_FILE%" ( echo 权限正常:可写入临时文件夹。 echo %LOG_TIME% - 权限正常 >> "%LOG_FILE%" del "%TEST_FILE%" >nul 2>&1 ) else ( echo 权限异常,尝试修复... echo %LOG_TIME% - 权限异常,尝试修复 >> "%LOG_FILE%" icacls "%TEMP_DIR%" /inheritance:e /grant "%USERNAME%:(F)" /T >nul 2>&1 if errorlevel 1 ( echo %LOG_TIME% - 权限修复失败 >> "%LOG_FILE%" pause exit /b 1 ) else ( echo %LOG_TIME% - 权限已修复 >> "%LOG_FILE%" ) ) :: 清理 .tmp 文件 echo %LOG_TIME% - 开始删除 *.tmp 文件 >> "%LOG_FILE%" set "DEL_COUNT=0" for /r "%TEMP_DIR%" %%F in (*.tmp) do ( if exist "%%F" ( del /f /q "%%F" >nul 2>&1 if not exist "%%F" ( set /a DEL_COUNT+=1 echo %LOG_TIME% - 已删除: "%%F" >> "%LOG_FILE%" ) else ( echo %LOG_TIME% - 删除失败: "%%F" >> "%LOG_FILE%" ) ) ) echo %LOG_TIME% - 共删除 !DEL_COUNT! 个 .tmp 文件 >> "%LOG_FILE%" echo 已清理 !DEL_COUNT! 个临时文件。 :: 可选 cipher 擦除 set "DO_CIPHER=0" echo. echo ===================================== echo 是否执行安全擦除 (cipher)? echo 这将覆盖已删除文件的空间,防止恢复,可能需要较长时间。 echo ===================================== set /p "USER_INPUT=请输入 Y 执行擦除,或直接回车跳过: " if /i "!USER_INPUT!"=="Y" set "DO_CIPHER=1" if "!DO_CIPHER!"=="1" ( echo %LOG_TIME% - 开始 cipher /w 擦除... >> "%LOG_FILE%" echo 正在安全擦除空闲空间,请耐心等待... cipher /w:"%TEMP_DIR%" >nul if errorlevel 1 ( echo %LOG_TIME% - cipher 运行出错,错误码 !errorlevel! >> "%LOG_FILE%" ) else ( echo %LOG_TIME% - cipher 已完成 >> "%LOG_FILE%" ) ) else ( echo %LOG_TIME% - 用户跳过安全擦除 >> "%LOG_FILE%" echo 已跳过安全擦除。 ) echo %LOG_TIME% - 清理流程结束 >> "%LOG_FILE%" echo. echo 全部操作完成!日志文件: %LOG_FILE% pause >nul endlocal exit /b 0注意:cipher /W仅对机械硬盘有效,且耗时较长;SSD 用户建议使用官方安全擦除工具。
至此,我们对 Windows 命令行中的文件管理、权限控制、搜索与数据清理有了全面且深入的理解。将这些命令组合运用,便能编写出自动化运维脚本。
上一篇:CMD命令自修实战手册 | 第一篇:文件与目录管理(上)