中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 18:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 重命名的问题 查看 838 回复 6
楼 主 重命名的问题 发表于 2009-05-07 11:37 ·  中国 辽宁 大连 联通
新手上路
积分 13
发帖 18
注册 2009-01-31 19:21
17年会员
UID 137721
性别 男
状态 离线

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

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

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

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


目地就不说了,谢谢高手呀。
顺便问下,DIR c:\*.*>a.txt
在cmd 下可以,在bat里就不行呢,是不是没写好,还是别的原因,就是一问题就找了两小时,晕呀,本人菜鸟。
2 发表于 2009-05-07 12:51 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
运行一次改名,运行第二次还原。。。
@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")
精简
=> 个人网志
3 发表于 2009-05-08 08:59 ·  中国 辽宁 大连 联通
新手上路
积分 13
发帖 18
注册 2009-01-31 19:21
17年会员
UID 137721
性别 男
状态 离线
谢谢楼上的帮忙,但不好用。
存为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' 查找这两种格式的电影
太菜了,但不好用为什么呢。
4 发表于 2009-05-08 09:01 ·  中国 辽宁 大连 联通
新手上路
积分 13
发帖 18
注册 2009-01-31 19:21
17年会员
UID 137721
性别 男
状态 离线
驱动器 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的内容。
5 发表于 2009-05-08 09:35 ·  中国 辽宁 大连 联通
新手上路
积分 13
发帖 18
注册 2009-01-31 19:21
17年会员
UID 137721
性别 男
状态 离线
加个PAUSE,才看明白错误在哪。
系统找不到指定的文件。
文件名,目录名或卷标语法不正确
文件名,目录名或卷标语法不正确
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
6 发表于 2009-05-08 14:37 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
不好意思,少了一个参数 /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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
caiye211221 +1 2009-05-09 05:07
精简
=> 个人网志
7 发表于 2009-05-09 05:22 ·  中国 辽宁 大连 联通
新手上路
积分 13
发帖 18
注册 2009-01-31 19:21
17年会员
UID 137721
性别 男
状态 离线
太帅了,感谢。
能大概的讲下,让我明白下吗。
论坛跳转: