中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?
« [1] [2] [3] »
作者:
标题: 难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理? 上一主题 | 下一主题
irene6851
初级用户





积分 28
发帖 16
注册 2009-4-28
状态 离线
『楼 主』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

100,000多份.pdf 需重新命名, 向各位大侠求助!

原.pdf文件名为10位数字+5位英文字母, 例如: 1234567890ABCDE.pdf ;

对应的.txt内容是 数字+中文+数字, 例如: 0.0.0 掌上明珠 1-234-56-7890 ;

以上可以发现10位数字的内容是一一对应的, 只是有无"-"符号.

如何将 "1234567890ABCDE.pdf" 更换成 "0.0.0_1-234-56-7890_掌上明珠.pdf".

希望能批量处理这个难题!谢谢!


MSN: irene6851sun@hotmail.com

[ Last edited by irene6851 on 2009-4-30 at 10:20 ]

2009-4-29 01:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 2 楼』:  

发现有点问题~~
ren ??????????????.pdf ?-???-??-????_掌上明珠.pdf
for /r %%i in (*_掌上明珠.pdf) do ren %%~nxi 0.0.0_%%~nxi
[ Last edited by freeants001 on 2009-4-29 at 02:00 ]

2009-4-29 01:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
irene6851
初级用户





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 3 楼』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

原.pdf文件名的数字和英文都各不相同, 而且, 对应的.txt内容是也是每个都不同的. 分别如下:
       .pdf 文件名                    .txt对应内容
2345678901ABEDC. pdf    <--->  2.3.4 无巧不成书 2-345-67-8901
3456789012BAECD. pdf    <--->   4.5.6 一言难尽的鸟 3-456-78-9012
....
.txt里面的内容不重复, 方式类似书籍的"章节", 没有一定的规律可寻. 只有末尾数字与.pdf原文件名重复.

根据网友提问补充:
.txt里面的内容格式, 大概是下面这个样子的.
2.3.4 无巧不成书 2-345-67-8901
4.5.6 一言难尽的鸟 3-456-78-9012
前三位数字是顶格的, 如果不是的, 我自己会调整成顶格的.
中间有一个空格, 然后是中文, 再空格, 然后是数字(中间有"-" )

最后重新改好的文件名的格式如下:
0.0.0_1-234-56-7890_掌上明珠.pdf
(顶格)数字 下划线 数字(中间有"-"  ) 下划线 中文.pdf

[ Last edited by irene6851 on 2009-4-30 at 01:09 ]

2009-4-29 02:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 4 楼』:  

2345678901ABEDC. pdf    <--->  2.3.4 无巧不成书 2-345-67-8901
3456789012BAECD. pdf    <-->   4.5.6 一言难尽的鸟 3-456-78-9012
红色的部分是不是写错了,应该是3.4.5

2009-4-29 02:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 5 楼』:  

理解错了,想复杂了

2009-4-29 02:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
irene6851
初级用户





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 6 楼』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

测试结果:
1. 8楼 代码基本达到要求. 只是文件格式和想要的不太一样.
想要的格式如下:
0.0.0_1-234-56-7890_掌上明珠.pdf
(顶格)数字 下划线 数字(中间有"-"  ) 下划线 中文.pdf

2. 10楼 测试上面的几个范例很OK, 但是测试实际文件时, 文件名没有改变. 提示是"按任意键继续".

3.  9楼 测试实际文件时, 文件名没有改变. 提示是"按任意键继续".

请各位大侠看看有没有可能改进一下代码?

特别感谢8楼, 9楼, 10楼的三个大侠的帮助, 减轻了我的心理障碍, 因为公司的高级MIS一直肯定的告诉我, 你的想法根本就是不可能的!

[ Last edited by irene6851 on 2009-4-30 at 03:15 ]

2009-4-29 02:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 7 楼』:  

看错题了,你说的是某个txt文件中的内容?
比如 2.3.4 无巧不成书 2-345-67-8901 这其中的 2.3.4 是顶格写的吗?还是有空格在前面?

[ Last edited by 26933062 on 2009-4-29 at 02:43 ]



致精致简!
2009-4-29 02:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 8 楼』:  


@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (t.txt) do (
set "mmm=%%~nxi"
set mmm=!mmm:-=!
set mmm=!mmm:~-10!
ren "!mmm!*.pdf" "%%~nxi.pdf"
)
pause


2009-4-29 02:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 9 楼』:  

十万个,还是创建一个临时文件速度快些,确定当前目录没有 tem 文件。
txt 文件为 a.txt 临时文件为 tem
未测试,测试前先备份原文件。。。。。。。
@echo off&setlocal enabledelayedexpansion
findstr /be "[0-9]\.[0-9]\.[0-9].*[0-9]*-[0-9]*-[0-9]*-[0-9]*" a.txt>tem
for /f "tokens=1-3 delims= " %%a in (tem) do (
   set num=%%c&set "num=!num:-=!"
   ren "!num!?????.pdf" "%%a_%%c_%%b.pdf"
)
del /q tem
pause




致精致简!
2009-4-29 03:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 10 楼』:  


@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,3" %%a in (a.txt) do (
set "str=%%c
set str=!str:-=!
ren "!str!*.*" "%%a_%%c_%%b.pdf"
)
pause
附件为测试用的

[ Last edited by netbenton on 2009-4-30 at 00:23 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-29 07:49
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
irene6851
初级用户





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 11 楼』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

测试结果:

测试结果:
1. 8楼 代码基本达到要求. 只是文件格式和想要的不太一样.
想要的格式如下:
0.0.0_1-234-56-7890_掌上明珠.pdf
(顶格)数字 下划线 数字(中间有"-"  ) 下划线 中文.pdf

2. 10楼 测试上面的几个范例很OK, 但是测试实际文件时, 文件名没有改变. 提示是"按任意键继续".

3.  9楼 测试实际文件时, 文件名没有改变. 提示是"按任意键继续".

请各位大侠看看有没有可能改进一下代码?

2009-4-30 04:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 12 楼』:  

这样应该可以了

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3" %%i in (t.txt) do (
  4. set "mmm=%%~nxk"
  5. set mmm=!mmm:-=!
  6. set mmm=!mmm:~-10!
  7. ren "!mmm!*.pdf" "%%i_%%j_!mmm!.pdf"
  8. )
  9. pause


2009-4-30 04:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
irene6851
初级用户





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 13 楼』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

12楼测试结果是"系统找不到指定的文件."

桌面test文件夹里t.txt, tt.bat 和.pdf.

2009-4-30 04:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 14 楼』:  

2.3.4 无巧不成书 2-345-67-8901

是不是你的txt文件中类似上面红色部份的结构中含有空格??

2009-4-30 05:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 15 楼』:  


@echo off
for /f "tokens=1-6 delims=- " %%1 in (a.txt) do (
  ren %%3%%4%%5%%6?????.pdf %%1_%%3-%%4-%%5-%%6_%%2.pdf
)
注:中文不能含空格、连接符“-”只能有三个。

[ Last edited by tireless on 2009-4-30 at 06:08 ]

2009-4-30 06:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: