标题: [文本处理] 求一个批量删除文件后缀中文的bat脚本 [打印本页]
作者: U0BXS3 时间: 2024-6-14 18:59 标题: 求一个批量删除文件后缀中文的bat脚本
求助大神,有一需求是将同一目录下的所有文件(不包括文件夹)的后缀中的中文删除,例如将“file.7中z文”变为“file.7z”
中文可能存在在不同位置,将其删除后保持原后缀顺序即可,例如,可能存在:
"file1.7中z文"
"file2.z有i中p文"
"file3.rar中文在这"
运行后期望得到:
"file1.7z"
"file2.zip"
"file3.rar"
希望大神能不吝赐教,感谢!
作者: aloha20200628 时间: 2024-6-14 19:52
本帖最后由 aloha20200628 于 2024-6-14 20:09 编辑
回复 1# U0BXS3 - @echo off &for /f "delims=" %%F in ('dir/b/s/a-d') do (
- set "F=%%F"&set "nF=%%~nF"&set "xF=%%~xF" &setlocal enabledelayedexpansion
- set "xH=" & (call :cutHZ "!xF!" xH)
- if defined xH if "!xF!" neq "!xH!" (ren "!F!" "!nF!!xH!" 2>nul)
- endlocal
- )
- pause&exit/b
- :cutHZ // 删除扩展名中包含的全部中文字符 限定扩展名最大长度=16(可自定义即修改下面一行中的数字16)
- set "$s=%~1"&set "_s="&for /L %%n in (0 1 16) do (
- set "c=!$s:~%%n,1!" &if "!c!"=="" set "%~2=!_s!" &exit/b
- if "!c!" leq "Z" set "_s=!_s!!c!"
- )
- exit/b
复制代码
作者: aloha20200628 时间: 2024-6-14 20:37
回复 1# U0BXS3
再给一个不用限定扩展名长度的版本
- @echo off &for /f "delims=" %%F in ('dir/b/s/a-d') do (
- set "F=%%F"&set "nF=%%~nF"&set "xF=%%~xF"&setlocal enabledelayedexpansion
- set "xH="&set "_xF=!xF!" & (call :cutHZ)
- if defined xH if "!xF!" neq "!xH!" (echo,ren "!F!" "!nF!!xH!" 2>nul)
- endlocal
- )
- pause&exit/b
- :cutHZ // 删除扩展名中包含的全部中文字符
- if "!_xF!"=="" (exit/b) else (
- set "c=!_xF:~,1!" &if "!c!" leq "Z" (set "xH=!xH!!c!")
- set "_xF=!_xF:~1!" &goto :cutHZ
- )
- exit/b
复制代码
作者: U0BXS3 时间: 2024-6-14 20:51
回复 2# aloha20200628
非常感谢大神,谢谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |