[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. for %%a in (*.*) do (
  3.     if "%%~nxa" neq "%~nx0" (
  4.         set "name=%%~na"
  5.         setlocal enabledelayedexpansion
  6.         set name1=!name!
  7.         call :lp
  8.         ren "!name!%%~xa" "!nam!%%~xa"
  9.         set "nam="
  10.         endlocal
  11. )
  12. )
  13. pause
  14. :lp
  15. if defined name1 (
  16. set "var=!name1:~,1!"
  17. if "!var!" leq "Z" (
  18. if "!var!" geq "a" (
  19. set "nam=!nam!!var!"
  20. ))
  21. set "name1=!name1:~1!"
  22. goto lp
  23. )
复制代码
我是最怕特殊字符的。。。T.T

[ 本帖最后由 pusofalse 于 2008-7-27 18:48 编辑 ]
2

评分人数

心绪平和,眼藏静谧。

TOP

我觉得不用改啊
我这里的z是大写啊~

[ 本帖最后由 pusofalse 于 2008-7-27 21:09 编辑 ]
心绪平和,眼藏静谧。

TOP

看到terse前辈的代码,忽然闪现了一个思路,但立刻消失了,觉得这题肯定有更简单的方法。
只需思考一个问题,如何把字母从这一堆特殊字符中提取出来即可。
心绪平和,眼藏静谧。

TOP

写了将近一个小时,做是做出来了,但并不简洁。
  1. @echo off
  2. for %%a in (*.*) do (
  3. if "%%~nxa" neq "%~nx0" (
  4. set "name=%%~na"
  5. call,set name=%%name: =%%
  6. call,set name=%%name:!=%%
  7. setlocal enabledelayedexpansion
  8. for /l %%s in (0 1 9) do set name=!name:%%s=!
  9. set name=!name:%%=!
  10. for %%s in (@ _ # . $ - ^&) do set name=!name:%%s=!
  11. call :lp !name!
  12. echo !nam!%%~xa&set "nam="
  13. endlocal
  14. ))
  15. pause&exit/b
  16. :lp
  17. for /f "tokens=1* delims=~" %%l in ("%1") do (
  18. set "n=!n!%%l
  19. if "%%m" neq "" (
  20. call :lp %%m
  21. ) else (
  22. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set n=!n:%%a= %%a !
  23. for %%a in (!n!) do if "%%a" geq "a" if "%%a" leq "Z" set nam=!nam!%%a
  24. ))
复制代码
心绪平和,眼藏静谧。

TOP

回复 13楼 的帖子

我可是测试了好多遍的,特殊字符无非就是那么几个而已。
心绪平和,眼藏静谧。

TOP

返回列表