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

学习批处理修改文件名笔记

朋友知道我学P,说又一个文件夹又一堆 莲花争霸1[tudou.com].3gp的视频
他希望改为  莲花争霸1.3gp
于是开始了批重命名文件名的过程
首先,决定用 for /d来遍历目录
但是发现总是失败
哎····原来 for /d是遍历文件夹的,不能是文件
接着,用for /r 哈哈
这下应该可以了吧
于是有了下面的代码
  1. @echo off & setlocal enabledelayedexpansion
  2. for /r e:\1 %%a in (*.3gp) do ( set str=%%a
  3. set str1=!str:[tudou.com]=!
  4. pause
  5. ren !str! !str1!
  6. )
复制代码
晕。错误了。
查了下ren的用法
发现原理是ren错误
于是有了下面的代码
  1. @echo off & setlocal enabledelayedexpansion
  2. for /r e:\1 %%a in (*.3gp) do ( set str=%%a
  3. set str1=!str:[tudou.com]=!
  4. set str2=!str1:e:\1\=!
  5. echo !str! & echo !str2!
  6. pause
  7. ren !str! !str2!
  8. pause
  9. )
复制代码
哈哈,成功了。赶快发代码给朋友。(*^__^*) 嘻嘻……
发现很多细节的东西要等到用的时候才能够发现
以后要多多练习
呵呵

[ 本帖最后由 novaa 于 2007-11-21 16:23 编辑 ]
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

进步很快啊。不错。还需继续努力
解决问题,办法有多个,再给你个简单的。
注意:重命名文件或文件夹时,最好养成给文件路径加引号的习惯,防止文件名或路径有空格。
  1. @echo off
  2. for /f "tokens=1* delims=[" %%a in ('dir/b *.3gp') do (
  3. echo ren "%%a[%%b"   "%%a%%~xb"
  4. )
  5. pause
复制代码
技术问题请到论坛发帖求助!

TOP

嗯。以后注意加 "  "
不过那个 "%%a%%~xb"能否解释一下
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

在for里面的东西找到了
  1. 另外,FOR 变量参照的替换已被增强。您现在可以使用下列
  2. 选项语法:
  3. ~I - 删除任何引号("),扩充 %I
  4. %~fI - 将 %I 扩充到一个完全合格的路径名
  5. %~dI - 仅将 %I 扩充到一个驱动器号
  6. %~pI - 仅将 %I 扩充到一个路径
  7. %~nI - 仅将 %I 扩充到一个文件名
  8. %~xI - 仅将 %I 扩充到一个文件扩展名
  9. %~sI - 扩充的路径只含有短名
  10. %~aI - 将 %I 扩充到文件的文件属性
  11. %~tI - 将 %I 扩充到文件的日期/时间
  12. %~zI - 将 %I 扩充到文件的大小
  13. %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
  14. 到找到的第一个完全合格的名称。如果环境变量名
  15. 未被定义,或者没有找到文件,此组合键会扩充到
  16. 空字符串
  17. 可以组合修饰符来得到多重结果:
  18. %~dpI - 仅将 %I 扩充到一个驱动器号和路径
  19. %~nxI - 仅将 %I 扩充到一个文件名和扩展名
  20. %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
  21. %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
  22. 到找到的第一个驱动器号和路径。
  23. %~ftzaI - 将 %I 扩充到类似输出线路的 DIR
  24. 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
  25. 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
  26. 比较易读,而且避免与不分大小写的组合键混淆。
复制代码

下面是我的测试代码
1.txt的内容为
fjikgfdg[df].bat
dfdfsd[fdf].batl
我的测试代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=[" %%a in (1.txt) do (set var1="%%~xb"
  4. echo %%a & echo %%b & echo !var1!
  5. )
  6. pause
复制代码

结果为:
  1. fjikgfdg[df]
  2. fjikgfdg[df]
  3. bat
  4. ""
  5. dfdfsd[fdf]
  6. dfdfsd[fdf]
  7. batl
复制代码

哈哈
这个的意思也就是把后面格式为****.*的格式为.*的取出来,不管前面的为什么内容
呵呵
这个用法就大概知道了
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

回复 1楼 的帖子

请问这段代码里的!是什么意思啊set str1=!str:[tudou.com]=!

TOP

5# shenye08


set str1=!str:[tudou.com]=!
rem 将变量str1中的[tudou.com]取消掉(赋值为空)

TOP

返回列表