[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-4-20 15:02 编辑


当前目录及其子目录中所有包含中文字符(中文标点等特殊符号除外)的文件名更名为 “所在目录名+被提取的中文字符”,文件名中未含中文字符则不予更名
  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "delims=" %%F in ('dir/b/s/a-d') do (
  3. set "nH=" & (call :getHZ "%%~nF" nH)
  4. if defined nH for %%P in ("%%~pF.") do (echo,ren "%%~F" "%%~nP+!nH!%%~xF")
  5. )
  6. exit/b
  7. :getHZ
  8. set "$s=%~1"&set "_s="
  9. for /L %%n in (0 1 260) do (
  10.    set "c=!$s:~%%n,1!" &if "!c!"=="" set "%~2=!_s!" &exit/b
  11.    if "!c!" gtr "Z" set "_s=!_s!!c!"
  12. )
  13. exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2024-4-20 21:43 编辑

回复 3# gaoyh2008

“似乎不成功”是啥意思? 是提取汉字错误还是未能提取汉字?还是其他什么...?
再明确一下》2楼代码存为 test.bat 须放在被处理文件的目录中运行!

TOP

回复 3# gaoyh2008

抱歉!居然只发了一个预览版代码
感谢7楼提点
实用版代码如下...
  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "delims=" %%F in ('dir/b/s/a-d') do (
  3. set "nH=" & (call :getHZ "%%~nF" nH)
  4. if defined nH for %%P in ("%%~pF.") do (ren "%%~F" "%%~nP+!nH!%%~xF")
  5. )
  6. pause&exit/b
  7. :getHZ
  8. set "$s=%~1"&set "_s="
  9. for /L %%n in (0 1 260) do (
  10.    set "c=!$s:~%%n,1!" &if "!c!"=="" set "%~2=!_s!" &exit/b
  11.    if "!c!" gtr "Z" set "_s=!_s!!c!"
  12. )
  13. exit/b
复制代码

TOP

返回列表