CMD命令自修实战手册 | 第一篇:文件与目录管理(下)

📅 2026/7/5 14:52:59
CMD命令自修实战手册 | 第一篇:文件与目录管理(下)
本篇系统梳理了 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更加强大支持正则表达式、递归搜索、多文件匹配、多种匹配模式还可从文件读取搜索列表是命令行下的高级文本搜索利器。两者常配合管道用于日志分析、脚本过滤和输出重定向。语法findfind [/V] [/C] [/N] [/I] [/OFF[LINE]] string [[drive:][path]filename ...]若未指定文件名find会从标准输入管道读取内容。findstrfindstr [/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. 递归搜索所有子目录下的文件findstrfindstr /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 {YN}实战演练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.sys5. 批量获取某类型文件的所有权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|re启用继承d禁用继承并转换为显式权限r移除所有继承权限并转为显式权限后禁用继承。/setowner 用户更改所有者需要相应特权。/T递归遍历所有子目录和文件。/C遇到错误继续执行。/Q安静模式。/save 文件将 ACL 备份至文件。/restore 文件从备份文件还原 ACL。权限缩写常用掩码缩写含义对应基本权限FFull Control完全控制MModify修改RXRead and Execute读取和执行RRead读取WWrite写入(OI)对象继承Object Inherit权限应用于此目录中的文件(CI)容器继承Container Inherit权限应用于此目录中的子文件夹(I)继承的权限权限来自父目录实战演练1. 查看文件或目录的完整权限icacls C:\Program Files\MyApp\config.ini2. 授予用户完全控制权限递归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. 备份和恢复 ACLicacls 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.docx5. 备份 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因此重命名账户不会丢失权限。查看当前用户的 SIDwhoami /user查看所有本地用户的 SIDwmic 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 权限系统NTFSNTFS 文件系统中每个文件和文件夹都带有一张访问控制列表ACL精确控制“谁用户/组 SID能做什么权限掩码”。一、核心概念安全描述符包含所有者、DACL自主访问控制列表和 SACL审核列表。ACE访问控制条目每条 ACE 包含主体 SID、允许/拒绝类型、权限掩码。二、基本权限与高级权限基本权限在“属性→安全”中常见基本权限含义包含的部分高级权限完全控制所有能力包括修改权限和取得所有权。所有高级权限修改读取、写入、修改内容及删除。读、写、执行、删除读取和执行浏览文件夹、运行程序、查看内容。遍历文件夹/执行文件、读取数据、读取属性等列出文件夹内容仅限文件夹可查看目录内容列表。遍历文件夹、读取属性读取查看文件内容、复制。读取数据、读取属性、读取扩展属性写入新建文件/子文件夹修改内容。创建文件/写入数据、创建文件夹/附加数据、写入属性高级权限13 项在“高级→编辑”中可见是最小粒度权限可灵活组合例如“遍历文件夹/执行文件”、“删除子文件夹及文件”、“更改权限”、“取得所有权”等。三、权限的来源与继承默认情况下子对象从父目录继承权限。可通过/inheritance参数禁用/启用继承或将继承权限转换为显式权限。显式设置的权限会覆盖继承的权限。四、权限冲突与生效规则拒绝优先任何“拒绝”与“允许”冲突时拒绝一定胜出。权限累积用户及所属全部组的允许权限是并集。有效权限 (所有允许的并集) - (任何拒绝)。网络访问时NTFS 权限与共享权限取交集最严格者生效。五、特殊身份与内置组组名SID意义EveryoneS-1-1-0所有用户包括匿名需策略开启。Authenticated UsersS-1-5-11所有经过身份验证的用户不含匿名。SYSTEMS-1-5-18操作系统最高本地身份权限高于 Administrator。CREATOR OWNERS-1-3-0可继承“创建者获得完全控制”的模板。常用于公共目录。OWNER RIGHTSS-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 tokens1,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 21 if errorlevel 1 ( echo 错误此脚本必须以管理员身份运行 pause exit /b 1 ) echo 正在进行初始化... set LOG_FILE%~dp0cleanup_log.txt set TEMP_DIR%TEMP% for /f tokens1,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. 2nul %TEST_FILE% if exist %TEST_FILE% ( echo 权限正常可写入临时文件夹。 echo %LOG_TIME% - 权限正常 %LOG_FILE% del %TEST_FILE% nul 21 ) else ( echo 权限异常尝试修复... echo %LOG_TIME% - 权限异常尝试修复 %LOG_FILE% icacls %TEMP_DIR% /inheritance:e /grant %USERNAME%:(F) /T nul 21 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_COUNT0 for /r %TEMP_DIR% %%F in (*.tmp) do ( if exist %%F ( del /f /q %%F nul 21 if not exist %%F ( set /a DEL_COUNT1 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_CIPHER0 echo. echo echo 是否执行安全擦除 (cipher) echo 这将覆盖已删除文件的空间防止恢复可能需要较长时间。 echo set /p USER_INPUT请输入 Y 执行擦除或直接回车跳过: if /i !USER_INPUT!Y set DO_CIPHER1 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命令自修实战手册 | 第一篇文件与目录管理上