新闻详情

新闻详情

首页 / 资讯中心 / 详情

Windows下批量删除文件夹名关键字:bat与PowerShell实战

发布时间:2026/9/7 8:57:37来源:尧图网络
Windows下批量删除文件夹名关键字:bat与PowerShell实战
网上整理资料时经常会遇到这样的场景下载了一堆学习资料文件夹明明是按顺序排好的结果被“1”“(最终版)”“_v2”“-副本”这类关键字弄得乱七八糟。想批量去掉这些文件夹名里的关键字Windows 资源管理器却只能一个文件夹一个文件夹地按 F2 修改几十个文件夹改下来既单调又容易出错。这篇文章就来系统讲清楚在 Windows 环境下如何批量删除多个文件夹名中的指定关键字。你可以选择复制即用的 bat 批处理方案也可以使用功能更灵活的 PowerShell 脚本方案。文章会给出完整代码、逐行解释和排错思路帮你彻底告别手动一个个改文件夹名的苦差事。1. 批量删除文件夹名关键字的适用场景与背景很多人第一次接触“批量重命名文件夹”这个需求往往是从整理资源开始的。比如从网上下载了几十个章节文件夹命名格式统一是“第01章 视频【转码】”“第02章 视频【转码】”想去掉里面的“【转码】”三个字或者项目归档时文件夹统一带了“-final”“-backup”之类的后缀现在需要清理归档名称。这类需求有一个共同特点操作模式重复、数量大、规则单一。手动修改不仅浪费时间而且容易漏改、误改。在 Windows 中资源管理器的重命名功能只支持单文件夹操作并不支持按关键字批量匹配和替换。如果要批量修改只能借助命令行脚本或第三方工具。这里要注意区分“批量删除关键字”和“批量重命名前缀后缀”的区别。批量加前缀、加后缀资源管理器全选后按 F2 也可以做到但“从文件夹名中间删除若干字符”则必须使用支持变量替换的方式这正是本文要解决的问题。2. 环境准备与核心思路本文方案主要面向 Windows 系统只需要系统自带的命令行工具不需要安装额外的第三方软件。2.1 适用环境说明操作系统Windows 10、Windows 11 以及 Windows Server 2016 以上版本均可。脚本工具cmd 批处理.bat和 Windows PowerShell 5.1。无需管理员权限只要对目标文件夹有读取和重命名权限即可。如果使用 PowerShell建议确认脚本执行策略后面会讲到具体处理方式。需要说明的是bat 和 PowerShell 的基本语法在 Windows 7 及以上系统都是通用的本文示例涉及的语法和命令均属于基础能力不涉及特定版本的新增特性。2.2 三类方案怎么选方案优点缺点适合场景bat 批处理双击即用代码直观依赖最少对中文编码比较敏感正则支持弱一次性清理电脑小白也能快速上手PowerShell支持正则表达式逻辑更强可测试执行需要了解简单 PowerShell 语法批量、多规则、写入自动化脚本第三方命名工具功能强大可视化操作需要下载安装可能捆绑其他软件经常整理文件、需要复杂规则的场景如果只为一两次清理bat 脚本最方便。如果你后续要写自动化脚本PowerShell 更适合。2.3 重命名的核心逻辑无论使用哪种方案批量删除文件夹名关键字的核心逻辑都是一样的遍历目标目录下的所有文件夹。读取当前文件夹名称。判断名称中是否包含目标关键字。如果包含把关键字替换为空字符串。检查替换后的名称是否和原名称相同。如果不同执行重命名。这个“先计算、再判断、后重命名”的顺序非常重要。如果没有判断步骤直接重命名可能会对不相关文件夹执行无意义操作甚至出现重名错误。3. 使用 bat 批处理批量删除文件夹名关键字bat 批处理是 Windows 系统下最直接的自动化方案。下面提供一个完整的可运行脚本。3.1 最简完整版脚本把下面的代码复制到一个新建的文本文件中修改target要删除的关键字一行然后保存为delete_folder_keyword.bat。echo off setlocal enabledelayedexpansion chcp 65001 nul rem 配置区 set target【转码】 rem echo 当前关键字%target% echo 正在扫描当前目录下的文件夹... for /d %%i in (*) do ( set name%%i set new!name:%target%! if not !name!!new! ( ren %%i !new! echo 已重命名%%i -^ !new! ) ) echo 批量处理完成 pause将 bat 文件放到需要清理的文件夹根目录下双击运行即可。3.2 脚本逐行解释echo off关闭命令行回显让输出更干净。setlocal enabledelayedexpansion启用延迟变量扩展。在括号代码块中如果直接使用%name%取变量得到的是代码块执行前的旧值使用!name!才能实时获取当前循环中设置的新值。这是新手最容易踩的坑。chcp 65001 nul把控制台代码页切换为 UTF-8解决中文关键字乱码问题。如果你的 bat 文件保存为 ANSI/GBK 编码这行可以去掉。for /d %%i in (*) do (...)/d表示只匹配目录不匹配文件%%i是循环变量注意在 bat 文件中必须写双百分号在命令行直接输入时写单百分号。set name%%i把当前文件夹名存入变量name。set new!name:%target%!这是变量替换的核心写法含义是从!name!中查找%target%把它替换为空。%target%后面没有内容表示替换为空字符串。if not !name!!new!如果替换前后的名称相同说明文件夹名中没有关键字跳过。ren %%i !new!执行重命名。ren命令对文件夹同样适用。echo 已重命名%%i -^ !new!输出日志。-^是对大于号做转义避免被命令解释器当成重定向符。3.3 同时删除多个关键字如果文件夹名中同时包含多个需要删除的关键字可以在配置区追加变量替换行。echo off setlocal enabledelayedexpansion chcp 65001 nul set target1【转码】 set target2-final set target3副本 for /d %%i in (*) do ( set name%%i set new!name:%target1%! set new!new:%target2%! set new!new:%target3%! if not !name!!new! ( ren %%i !new! echo 已重命名%%i -^ !new! ) ) echo 批量处理完成 pause实际项目中典型丑类关键字通常有限这种方式完全够用。如果关键字数量很多会显得繁琐建议改用后面的 PowerShell 方案。3.4 指定目标路径而不是当前目录上面示例默认处理 bat 文件所在目录。如果你想处理任意路径可以改成从命令参数读取echo off setlocal enabledelayedexpansion chcp 65001 nul set target旧版 set workdir%~1 if %workdir% set workdir%cd% echo 目标目录%workdir% echo 删除关键字%target% pushd %workdir% for /d %%i in (*) do ( set name%%i set new!name:%target%! if not !name!!new! ( ren %%i !new! echo 已重命名%%i -^ !new! ) ) popd echo 处理完成 pause使用方式是在命令行执行delete_folder_keyword.bat D:\我的资料\课程视频这里需要注意pushd %workdir%会切换到目标目录即使目标目录在其他盘符也能正确处理。4. 使用 PowerShell 批量处理文件夹名关键字PowerShell 比 bat 更强大支持正则表达式、对象管道和预演模式。下面完整演示从打开 PowerShell 到执行重命名的全流程。4.1 打开 PowerShell 并定位到目标目录在资源管理器中进入目标文件夹地址栏输入powershell后回车即可直接打开位于当前目录的 PowerShell 窗口。也可以使用 Win X 菜单打开“Windows PowerShell”然后执行 cd 命令切换目录cd D:\我的资料\课程视频4.2 单关键字替换脚本$path D:\我的资料\课程视频 $keyword 【转码】 Get-ChildItem -Path $path -Directory | Where-Object { $_.Name -like *$keyword* } | ForEach-Object { $newName $_.Name.Replace($keyword, ) if ($newName -ne $_.Name) { Rename-Item -Path $_.FullName -NewName $newName Write-Host 已重命名$($_.Name) - $newName } }逐行解释Get-ChildItem -Path $path -Directory获取指定路径下的所有目录对象不包含文件。Where-Object { $_.Name -like *$keyword* }先按照关键字过滤只保留名称中包含关键字的文件夹。$_.Name.Replace($keyword, )调用字符串的 Replace 方法删除关键字。Rename-Item -Path $_.FullName -NewName $newName执行重命名使用完整路径避免歧义。Write-Host把本次重命名信息打印到控制台。4.3 多关键字批量删除当关键字不止一个时可以定义一个关键字数组内部循环替换$path D:\我的资料\课程视频 $keywords (【转码】, -final, 副本) Get-ChildItem -Path $path -Directory | ForEach-Object { $newName $_.Name foreach ($kw in $keywords) { $newName $newName.Replace($kw, ) } if ($newName -ne $_.Name) { Rename-Item -Path $_.FullName -NewName $newName Write-Host 已重命名$($_.Name) - $newName } }这种写法的好处是修改规则非常方便在$keywords数组里增删内容即可。4.4 使用正则表达式删除规则片段正则表达式的处理能力远超普通字符串替换。比如你想删除文件夹名末尾的版本号和空格比如把“项目资料 v2”“项目资料 最终版”清理为“项目资料”可以这样写$path D:\项目归档 Get-ChildItem -Path $path -Directory | ForEach-Object { $newName $_.Name -replace \s*(v\d|最终版|旧版)\s*$, if ($newName -ne $_.Name) { Rename-Item -Path $_.FullName -NewName $newName Write-Host 已重命名$($_.Name) - $newName } }其中\s*匹配任意空白字符(v\d|最终版|旧版)匹配三种关键字之一$表示匹配结尾位置。-replace是 PowerShell 的正则替换运算符写法比 .NET 的正则类更简洁。4.5 先模拟执行确认无误再真正重命名PowerShell 内置了-WhatIf参数。加上后命令不会真正执行重命名而是输出“如果执行会发生什么”。$path D:\项目归档 $keyword 【转码】 Get-ChildItem -Path $path -Directory | Where-Object { $_.Name -like *$keyword* } | ForEach-Object { $newName $_.Name.Replace($keyword, ) if ($newName -ne $_.Name) { Rename-Item -Path $_.FullName -NewName $newName -WhatIf } }执行结果会显示哪些文件夹将被重命名以及新名称但不会真正修改。确认没问题后把-WhatIf删掉再执行一次即可。这是生产操作中最推荐的步骤成本极低但能有效避免批量误操作。4.6 PowerShell 执行策略问题如果保存为.ps1脚本文件双击运行可能遇到如下错误无法加载文件 xxx.ps1因为在此系统上禁止运行脚本。解决方法是临时放开当前控制台的执行策略Set-ExecutionPolicy -Scope Process Bypass这条命令只在当前 PowerShell 窗口生效关闭后就恢复不会影响系统设置。更省事的方式是直接把代码粘贴到 PowerShell 窗口逐行执行不保存为脚本文件就不会触发执行策略限制。5. 补充方法与常见替代工具除了写脚本Windows 生态中也有一些可视化批量重命名工具适合不愿意接触命令行的读者。Advanced RenamerBulk Rename UtilityReNamer这些工具都支持按关键字替换、正则表达式、预设规则批量处理文件与文件夹。如果你只需要偶尔清理一次脚本方案足够如果经常整理文件安装一个可视化工具可以提升效率。考虑到第三方工具良莠不齐下载时需要选择官网渠道避免捆绑软件。另外再补充一点ren命令本身虽然支持通配符比如ren *.txt *.md可以把扩展名从 txt 改为 md但它很难实现“保留中间内容并删除特定片段”的操作。因为ren的通配符匹配规则是把*对应的原文保持到新名称中无法对名称中间部分做条件替换。这也是为什么我们需要借助循环加变量替换的方式来实现批量删除关键字。6. 常见问题与排查思路接下来整理一批执行批量重命名时最容易遇到的问题方便你对照排查。问题现象常见原因解决思路bat 输出中文乱码系统代码页与 bat 文件编码不一致文件保存为 ANSI 编码或使用chcp 65001 nul切换为 UTF-8重命名后出现重名错误多个文件夹删除关键字后名称相同先模拟执行检查会不会撞名必要时添加规则避免同名提示“另一个程序正在使用此文件”文件夹正被资源管理器、编辑器或文件占用关闭相关窗口后重试bat 执行后没有任何反应关键字写错、当前没有匹配文件夹、文件中反引号/百分号被误改成全角符号检查关键字以及输出日志在for前面加一行echo 开始扫描测试!name!取不到新值忘记写setlocal enabledelayedexpansion补齐脚本第一行的setlocal enabledelayedexpansion路径中存在空格导致命令失败ren参数没有加引号确保所有路径和名称都使用双引号包裹文件夹被隐藏脚本扫描不到默认不显示隐藏文件夹在for /d前增加attrib -h或者 PowerShell 加-Force参数PowerShell 提示禁止运行脚本系统执行策略限制使用Set-ExecutionPolicy -Scope Process Bypass下面是两个高频问题的详细处理方式。6.1 bat 中文乱码解决方案bat 文件中的中文乱码本质是编码不一致。Windows 默认的 cmd 代码页通常是 936GBK如果脚本文件保存为 UTF-8 且没有切换代码页就会乱码。解决办法有两种把 bat 文件另存为 ANSI 编码。使用记事本打开文件选择“文件 - 另存为”编码选择“ANSI”。在脚本开头加上chcp 65001 nul并将文件另存为 UTF-8 编码。需要注意chcp 65001在部分 Windows 版本上可能导致批处理逐字解析异常如果遇到奇怪错误优先尝试方法 1这是兼容性最好的方案。6.2 重命名后出现“存在同名文件夹”这种情况多发生在删除关键字后多个文件夹的新名称撞在一起。例如项目A - 正版 项目A如果删除关键字“- 正版”第一个文件夹会重命名为“项目A”而当前目录中已经存在“项目A”命令就会报错。建议在批量执行前先用 PowerShell 的-WhatIf或手动查看规律判断重名概率。一旦发现可能撞名需要调整关键字规则或者增加去重规则例如重命名时检测名称是否存在存在就自动追加序号。7. 最佳实践与工程建议批量重命名虽然只是小操作但如果在真实项目目录中执行稍有不慎就会打乱归档结构。下面给出几条经过验证的实践建议。7.1 永远先备份目录清单重命名操作本质上是一次多文件夹的“结构化修改”一旦执行出错手动改回来非常痛苦。稳妥做法是执行前先把目录清单导出为文本文件dir /b /ad folder_list_before.txt或者使用 PowerShellGet-ChildItem -Path D:\目标目录 -Directory | Select-Object -ExpandProperty Name | Out-File -FilePath D:\folder_backup.txt -Encoding utf8这样即使改乱也能根据清单手动核对恢复。7.2 先模拟执行再真正运行无论是 bat 还是 PowerShell第一次都建议只打印日志不执行真正的ren或Rename-Item。上面的-WhatIf就是为此设计的。即使是 bat 脚本你也可以把ren行临时改成echo ren %%i !new!预览将要执行的命令。7.3 使用“纯深度”的批处理别随意加递归本文示例只遍历当前目录下一层的文件夹没有使用递归参数。如果目录层级很深需要递归处理子文件夹可以在 PowerShell 中给Get-ChildItem增加-Recurse参数但务必先配合-WhatIf验证。递归批量重命名时警告风险成倍增加不建议新手直接在生产目录执行。7.4 注意名称结尾的空格与点号Windows 文件夹名有时会以空格结尾这在实际文件系统中通常是不允许的但某些情况下会通过特殊工具生成。脚本处理时需要留意TrimEnd方法PowerShell 中可以使用$newName $newName.TrimEnd()如果重命名后名称发生了首尾空格变化建议额外增加检查避免生成无意义名称。7.5 日志输出与修改留痕批量脚本执行完后最好把执行结果保留下来方便核查。bat 中可以追加重定向echo 批量处理完成 rename_log.txtPowerShell 中可以直接| Out-File rename_log.txt或者使用Start-Transcript记录整个会话。这样即使后续发现某个文件夹被误改也能从日志中定位原始名称。7.6 不要在系统目录或程序安装目录执行批量重命名操作只应作用于你自己的数据目录。对C:\Windows、Program Files、用户配置目录等系统路径执行批量重命名轻则导致软件异常重则影响操作系统稳定运行。操作前确认路径是否准确永远是第一位的。8. 总结与进一步学习方向到这里你已经掌握了两种批量删除文件夹名关键字的核心方法使用 bat 批处理配合for /d、变量替换和ren命令适合一次性清理。使用 PowerShell 配合Get-ChildItem、Rename-Item和正则替换适合灵活多变的批量重命名任务。这两种方式不需要额外安装软件完全依赖 Windows 自带能力可以放心使用。建议你把脚本保存成delete_keyword.bat或rename_folder.ps1这类固定工具文件后续遇到类似整理需求直接改关键字就能复用。如果你在真实项目中频繁进行文件整理下一步还可以继续学习 PowerShell 的管道思想、正则表达式的常见匹配规则以及Rename-Item的更多参数。掌握这些之后你会发现不仅文件夹就连批量重命名几百个文件也只是几行脚本的事情。希望这篇文章能帮你从重复枯燥的重命名操作中解脱出来。如果你在运行过程中遇到其他报错或异常情况也欢迎在评论区留言一起交流解决方法。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MES终端稳定运行指南:上线前必做的系统设置与运维清单 2026/9/7 10:52:10

MES终端稳定运行指南:上线前必做的系统设置与运维清单

1. 先搞清楚一件事:产线 MES 终端不是普通电脑1.1 MES 终端的实际角色做项目实施的人都知道,MES(制造执行系统)夹在 ERP 和现场设备之间,管的是生产执行层面的工单派工、工序报工、物料领用、质量检验、设备点检这些事…

阅读更多 →
Tomcat 7.0.108实战:版本选型、部署排错与升级路径 2026/9/7 10:52:10

Tomcat 7.0.108实战:版本选型、部署排错与升级路径

简介:Apache Tomcat 7.0.108 是面向 Java Web 开发与运维人员的经典 Servlet 容器版本,适合部署 JSP、Servlet 及构建本地调试环境。压缩包内含完整的 apache-tomcat-7.0.108 主目录,共 640 个文件、约 10.38MB,文件类型以 html、…

阅读更多 →
仿滴滴打车安卓源码Eclipse导入调试全攻略 2026/9/7 10:52:09

仿滴滴打车安卓源码Eclipse导入调试全攻略

简介:一款仿滴滴打车的安卓项目源码,定位为移动出行类应用开发的学习范例,适合初、中级安卓开发者用来理解完整的打车业务流程。资源以Eclipse工程形式组织,可直接导入调试,便于边看边改。包体共289个文件,…

阅读更多 →
基于QT的智能家居上位机开发:从MQTT到串口通信实战解析 2026/9/7 10:52:09

基于QT的智能家居上位机开发:从MQTT到串口通信实战解析

简介:这是一套基于QT的智能家居控制系统完整工程,面向物联网开发学习者和嵌入式工程师,围绕客户端界面、Web服务端与智能设备联动展开,解决了跨平台远程控制与状态监控的核心需求。工程包含210个文件,压缩包大小仅4.01…

阅读更多 →
虚拟歌姬合唱制作:从音色工程到混音母带的完整指南 2026/9/7 10:52:09

虚拟歌姬合唱制作:从音色工程到混音母带的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
RK3588部署YOLO帧率优化:从算力迷思到工程实践 2026/9/7 10:49:09

RK3588部署YOLO帧率优化:从算力迷思到工程实践

先说一个我在群里经常看到的问题:同样的YOLO模型,在PC上跑得飞快,部署到RK3588这颗号称6 TOPS算力的边缘AI芯片上,帧率直接砍半,甚至掉到个位数。有人怀疑是不是买到假芯片,有人怀疑是模型转换出了问题&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞