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

1# regabc
第一个:
放在文件所在目录
  1. setlocal EnableDelayedExpansion
  2. for /r %%i in (*.html) do (set a=%%i
  3. ren "%%i" "!a:~0,-4!.txt")
复制代码
第二个:
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir /b *.txt') do (
  3. ren "%%~i" "wwf%%~nxi"
  4. )
复制代码
不管什么时候都要为有空格的路径或者文件名加上双引号,因为空格是批处理的默认分隔符。

TOP

7# hanyeguxing
第一个代码是怎么实现了,理解不了
  1. @echo off
  2. @echo off&setlocal enableDelayedExpansion
  3. for %%a in (*.html) do (
  4.         set "n=%%~na"
  5. echo !n!
  6. pause
  7.         for %%b in ("!n:_=\!") do (
  8.                 set "n=%%~pb"
  9. echo !n!
  10. pause
  11.                 set "n=!n:\=_!"
  12. echo !n!
  13. pause
  14.                 ren "%%a" "!n:~1,-1!.txt"
  15. echo %%a
  16. echo !n:~1,-1!
  17. ))
  18. pause
复制代码
停顿的回显也是理解不了,
  1. 偶然_,回_想起_六年前那难忘的一次_132
  2. 请按任意键继续. . .
  3. \hello\偶然\,回\想起\六年前那难忘的一次\
  4. 请按任意键继续. . .
  5. _hello_偶然_,回_想起_六年前那难忘的一次_
  6. 请按任意键继续. . .
  7. 偶然_,回_想起_六年前那难忘的一次_132.HTML
  8. hello_偶然_,回_想起_六年前那难忘的一次
  9. 请按任意键继续. . .
复制代码
把_换成路径\,路径\最后又换回_,最后重名也达不到效果啊。回显也是这么表示的,但实际却实现效果了。
为什么?

TOP

本帖最后由 Hello123World 于 2011-4-24 14:16 编辑

我搞错了,以为目的是去掉_的批处理了。
……
第一个代码有个小漏洞,如果是在非根目录,会把目录名也加入到文件名中,就跟上面的回显一样。hello
第二个代码可行。

标记学习一下:
是对文件名的最后特殊符号进行处理的算法,利用%~pi(路径的特性:\) %~ni(文件扩展名的特性:.)

TOP

返回列表