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

Windows批处理文件:如何移除文件的第一个扩展名?

Windows批处理移除文件第一个扩展名的简洁方法

要批量移除目录下所有文件的第一个扩展名(比如将1.txt.png改为1.png、abc.def.ghi改为abc.ghi),直接用rename *.txt.png *.png这类命令通用性差,且无法适配任意第一个扩展名的场景。这里提供一个简洁通用的批处理实现:

@echo off
setlocal enabledelayedexpansion
for %%f in (*.*.*) do (
    for /f "delims=." %%a in ("%%~nf") do (
        rename "%%f" "%%a%%~xf"
    )
)
endlocal

命令说明

  • @echo off:关闭命令行冗余输出,让执行过程更整洁
  • setlocal enabledelayedexpansion:开启延迟环境变量扩展,确保循环内变量能即时生效
  • for %%f in (*.*.*):遍历当前目录下所有包含至少两个扩展名的文件(即文件名含至少两个.)
  • for /f "delims=." %%a in ("%%~nf"):将文件的主名(如1.txt)按.分割,提取第一个部分(如1)
  • rename "%%f" "%%a%%~xf":将原文件重命名为「第一部分主名 + 原文件最后一个扩展名」的形式

优势

相比你提到的两种方法,这个实现:

  • 无需多次执行rename命令,一次循环完成所有操作
  • 不依赖固定长度的问号通配符,适配任意长度的第一部分主名和第一个扩展名
  • 通用性强,不管文件名包含多少个.,都能准确移除第一个扩展名

注意:如果重命名后出现文件名冲突(比如1.txt.png和1.doc.png重命名后都是1.png),命令会报错并跳过冲突文件,需提前处理这类情况。

内容的提问来源于stack exchange,提问作者tecdoc ukr net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:00:56