You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows CMD中使用通配符批量重命名文件的方法

嘿,我懂你遇到的痛点了——CMD自带的ren命令用通配符替换文件名中间的片段确实不好使,因为它的通配符逻辑只能匹配文件名的前缀或后缀,没法直接对中间的文本做替换。下面给你两个实用的解决方案,按需选择:

方法1:用CMD的for循环实现精准替换

CMD本身没有原生的字符串替换重命名功能,但可以通过for循环结合延迟变量扩展来实现。假设你要把文件名里的regular-exp替换成new-exp,按以下步骤操作:

  1. 打开CMD,进入目标文件所在的目录
  2. 先开启延迟环境变量扩展(这一步很关键,否则变量替换会失效):
    setlocal enabledelayedexpansion
    
  3. 执行下面的循环命令:
    for /f "delims=" %f in ('dir /b *regular-exp*') do (
        set "oldname=%f"
        set "newname=!oldname:regular-exp=new-exp!"
        ren "!oldname!" "!newname!"
    )
    

注意事项:

  • 如果你是把这段代码写到**批处理文件(.bat/.cmd)**里运行,要把命令里的%f改成%%f
  • dir /b参数只会输出纯文件名,不会带路径,确保只处理当前目录的文件
  • 替换的字符串要和文件名里的内容完全匹配(默认CMD不区分大小写,若需严格区分可调整变量扩展规则)

方法2:用PowerShell实现(更简单直观)

如果觉得CMD的写法太繁琐,PowerShell的字符串替换功能会更顺手,命令也更简洁。操作步骤:

  1. 打开目标文件夹,右键选择「在终端中打开」(或者直接搜索打开PowerShell,然后用cd命令切换到目标目录)
  2. 执行以下命令:
    Get-ChildItem *regular-exp* | Rename-Item -NewName { $_.Name -replace 'regular-exp', 'new-exp' }
    

额外技巧:

  • 如果你想先预览效果,不想直接修改文件名,可以加-WhatIf参数,这样只会显示将要执行的重命名操作,不会实际更改:
    Get-ChildItem *regular-exp* | Rename-Item -NewName { $_.Name -replace 'regular-exp', 'new-exp' } -WhatIf
    
  • 如果需要正则表达式匹配(比如替换符合某种模式的片段),直接把'regular-exp'换成正则表达式即可,PowerShell的-replace原生支持正则

内容的提问来源于stack exchange,提问作者Said Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:12:26