返回列表 发帖

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

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

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

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

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

TOP

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

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

TOP

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

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

结果为:
fjikgfdg[df]
fjikgfdg[df]
bat
""
dfdfsd[fdf]
dfdfsd[fdf]
batlCOPY

哈哈
这个的意思也就是把后面格式为****.*的格式为.*的取出来,不管前面的为什么内容
呵呵
这个用法就大概知道了
ㄗ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

返回列表