找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17237|回复: 3

[文本处理] 求一个批量删除文件后缀中文的bat脚本

[复制链接]
发表于 2024-6-14 18:59:58 | 显示全部楼层 |阅读模式
求助大神,有一需求是将同一目录下的所有文件(不包括文件夹)的后缀中的中文删除,例如将“file.7中z文”变为“file.7z”
中文可能存在在不同位置,将其删除后保持原后缀顺序即可,例如,可能存在:
"file1.7中z文"
"file2.z有i中p文"
"file3.rar中文在这"
运行后期望得到:
"file1.7z"
"file2.zip"
"file3.rar"
希望大神能不吝赐教,感谢!
发表于 2024-6-14 19:52:30 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-14 20:09 编辑

回复 1# U0BXS3

  1. @echo off &for /f "delims=" %%F in ('dir/b/s/a-d') do (
  2.         set "F=%%F"&set "nF=%%~nF"&set "xF=%%~xF" &setlocal enabledelayedexpansion
  3.         set "xH=" & (call :cutHZ "!xF!" xH)
  4.         if defined xH if "!xF!" neq "!xH!" (ren "!F!" "!nF!!xH!" 2>nul)
  5.         endlocal
  6. )
  7. pause&exit/b
  8. :cutHZ // 删除扩展名中包含的全部中文字符 限定扩展名最大长度=16(可自定义即修改下面一行中的数字16)
  9.         set "$s=%~1"&set "_s="&for /L %%n in (0 1 16) do (
  10.            set "c=!$s:~%%n,1!" &if "!c!"=="" set "%~2=!_s!" &exit/b
  11.            if "!c!" leq "Z" set "_s=!_s!!c!"
  12.         )
  13.         exit/b
复制代码
发表于 2024-6-14 20:37:36 | 显示全部楼层
回复 1# U0BXS3

再给一个不用限定扩展名长度的版本

  1. @echo off &for /f "delims=" %%F in ('dir/b/s/a-d') do (
  2.         set "F=%%F"&set "nF=%%~nF"&set "xF=%%~xF"&setlocal enabledelayedexpansion
  3.         set "xH="&set "_xF=!xF!" & (call :cutHZ)
  4.         if defined xH if "!xF!" neq "!xH!" (echo,ren "!F!" "!nF!!xH!" 2>nul)
  5.         endlocal
  6. )
  7. pause&exit/b
  8. :cutHZ // 删除扩展名中包含的全部中文字符
  9.         if "!_xF!"=="" (exit/b) else (
  10.                 set "c=!_xF:~,1!" &if "!c!" leq "Z" (set "xH=!xH!!c!")
  11.                 set "_xF=!_xF:~1!" &goto :cutHZ
  12.         )
  13.         exit/b
复制代码
 楼主| 发表于 2024-6-14 20:51:00 | 显示全部楼层
回复 2# aloha20200628


    非常感谢大神,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 02:46 , Processed in 0.016645 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表