Board logo

标题: 重命名的问题 [打印本页]

作者: caiye211221     时间: 2009-5-7 11:37    标题: 重命名的问题


1把一目录下的电影文件写入到a.txt内。
2给电影改名 比如第一个叫寻秦记,寻秦记2,寻秦记3 这样就可以了

1读取a.txt的内容,并按a.txt的内容给寻秦记,寻秦记1,寻秦记2重命名。

说的好像有点不容易让人理解。

美女.rmvb = 寻秦记
猛男.avi    = 寻秦记1
可以给它们改名,还可以改回来。


目地就不说了,谢谢高手呀。
顺便问下,DIR c:\*.*>a.txt
在cmd 下可以,在bat里就不行呢,是不是没写好,还是别的原因,就是一问题就找了两小时,晕呀,本人菜鸟。
作者: netbenton     时间: 2009-5-7 12:51
运行一次改名,运行第二次还原。。。
@echo off&setlocal enabledelayedexpansion
if exist 寻秦记 goto :还原
set n=
(for /f "delims=" %%a in ('dir *.rmvb *.avi') do (echo %%a=寻秦记!n!
        ren "%%a" 寻秦记!n!
        set/a n+=1
))>a.txt
goto :eof

:还原
for /f "tokens=1,2 delims==" %%a in (a.txt) do (ren %%b "%%a")

作者: caiye211221     时间: 2009-5-8 08:59
谢谢楼上的帮忙,但不好用。
存为BAT和电影放在一个文件夹,到是能生成A。TXT但不改名。不知道为什么。
能给我讲下吗。
if exist 寻秦记 goto :还原               如果名字是寻秦记,者GOTO还原
set n=
(for /f "delims=" %%a in ('dir *.rmvb *.avi') do (echo %%a=寻秦记!n!
        ren "%%a" 寻秦记!n!
        set/a n+=1
))>a.txt
goto :eof
这句也就看懂'dir *.rmvb *.avi'  查找这两种格式的电影
太菜了,但不好用为什么呢。
作者: caiye211221     时间: 2009-5-8 09:01
驱动器 E 中的卷是 新加卷=寻秦记
卷的序列号是 18DF-45B8=寻秦记1
E:\1\1 的目录=寻秦记2
E:\1\1 的目录=寻秦记3
09-04-28  20:55       529,488,956 十分爱.avi=寻秦记4
09-04-28  21:23       567,853,616 如果爱DVD.avi=寻秦记5
09-05-04  13:36       586,829,320 独自等待.avi=寻秦记6
               3 个文件  1,684,171,892 字节=寻秦记7
               0 个目录 18,916,614,144 可用字节=寻秦记8


这是运行后生成a.txt的内容。
作者: caiye211221     时间: 2009-5-8 09:35
加个PAUSE,才看明白错误在哪。
系统找不到指定的文件。
文件名,目录名或卷标语法不正确
文件名,目录名或卷标语法不正确
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
作者: netbenton     时间: 2009-5-8 14:37
不好意思,少了一个参数 /b


@echo off&setlocal enabledelayedexpansion
if exist 寻秦记 goto :还原
rem 如果已经文件“寻秦记”存在则跳到“:还原”
set n=
rem 将dir 命令得到的目录列表作为文本串给for /f 处理
(for /f "delims=" %%a in ('dir /b *.rmvb *.avi') do (echo %%a=寻秦记!n!
rem 显示对应关系,后面的!n!就是递增的序号,然后改名
        ren "%%a" 寻秦记!n!
        set/a n+=1
rem 循环一次n加1
))>a.txt
rem for 外面多了一层括号,意思是里面的代码为一组,这一组里面的所有显示输出全部通过管道转向到文件a.txt
goto :eof

:还原
rem 读取上面保存的文件a.txt作为文本串给for /f处理,
rem 将每个文本串以=号为分隔符分段,并赋值给%%a %%b
rem 每行文本串会执行一次ren  %%b "%%a"

for /f "tokens=1,2 delims==" %%a in (a.txt) do (ren %%b "%%a")

[ Last edited by netbenton on 2009-5-9 at 06:04 ]
作者: caiye211221     时间: 2009-5-9 05:22
太帅了,感谢。
能大概的讲下,让我明白下吗。