中国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
状态 离线
『第 16 楼』:  难题求助!用.txt内容重新命名对应.pdf文件,可否批量处理?

回复14楼freeants001:
.txt里面部分内容, 格式如下:
前面三个数字之间有.然后空格,再产品描述(中文; 英文字之间有空格),然后空格再接10位数字.

4.1.1 接通机器KF, FL, KL, VF 9-082-41-1071
4.1.1 启动机床PC 22 9-082-41-1091
4.2.8 显示输入单元PC 2x - 5x - 8x IPC 5.4.0.0 - IPC 5.5.0.0 9-082-42-8110
4.3.1 schuler 机床数据采集系统BASIC 9-082-43-1002
4.7.2 PC 22开始菜单 9-082-47-2011

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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 17 楼』:  

回复15楼tireless

测试代码, 不能更改文件名.

谢谢!

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




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

果然有空格~

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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 19 楼』:  

回复18楼freeants001: 试.txt将全部空格去掉,得到以下内容:
4.1.1接通机器KF,FL,KL,VF9-082-41-1071
4.1.1启动机床PC229-082-41-1091
4.2.8显示输入单元PC2x-5x-8xIPC5.4.0.0-IPC5.5.0.09-082-42-8110
4.3.1schuler机床数据采集系统BASIC9-082-43-1002
4.7.2PC22开始菜单9-082-47-2011
测试结果, 系统找不到指定的文件.

谢谢!

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




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

用这里http://www.cn-dos.net/forum/viewthread.php?tid=47244&fpage=12楼的的代码

把下面一行
sss=sss.replace(/^(\d.*\r\n)/gmi,"$1参考答案为\r\n");
替代成如下两行
            sss=sss.replace(/^\s*(\d.\d.\d)\s*/gmi,"$1_");
            sss=sss.replace(/\s*(\d-\d\d\d-\d\d-\d\d\d\d)\s*$/gmi,"_$1");


然后用这个脚本处理下你的哪个txt文件.

再用这里的8楼的代码就可以了.

[ Last edited by freeants001 on 2009-4-30 at 06:37 ]

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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 21 楼』:  

回复20楼 freeants001: 真的很感谢您的回复!

我现在手动去掉了.txt将全部空格去掉,得到以下内容:
4.1.1接通机器KF,FL,KL,VF9-082-41-1071
4.1.1启动机床PC229-082-41-1091
4.2.8显示输入单元PC2x-5x-8xIPC5.4.0.0-IPC5.5.0.09-082-42-8110
4.3.1schuler机床数据采集系统BASIC9-082-43-1002
4.7.2PC22开始菜单9-082-47-2011
测试结果, 系统找不到指定的文件.

麻烦看下是为什么?

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





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

用ren 加 通配符 陷阱太多,还是换种思路吧,
如果你的 数字+字母 的pdf 文件,数字顺序都是不重复的,且数字的位数都是一样多,可以试试下面的代码。
注意先备份源文件。。。
@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:-=!"
   for %%i in (!num!*.pdf)do ren "%%i" "%%a_%%c_%%b.pdf"
)
del /q tem
pause




致精致简!
2009-4-30 06:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





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

如果满足以下三个条件:

1、文本中每行的末尾不能有空格;
2、文本中不能含有英文感叹号;
3、末尾的数字必须是 9(一位)-082(三位)-41(两位)-1071(四位);
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (a.txt) do (
  set var=%%a
  ren "!var:~-13,1!!var:~-11,3!!var:~-7,2!!var:~-4!?????.pdf" "!var:~,5!_!var:~-13!_!var:~6,-14!.pdf"
)
[ Last edited by tireless on 2009-4-30 at 06:53 ]

2009-4-30 06:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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

晕,22楼是按你顶楼要求写的,你去掉空格就不行了。。



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




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



  Quote:
Originally posted by irene6851 at 2009-4-30 06:40:
回复20楼 freeants001: 真的很感谢您的回复!

我现在手动去掉了.txt将全部空格去掉,得到以下内容:
4.1.1接通机器KF,FL,KL,VF9-082-41-1071
4.1.1启动机床PC229-082 ...

手动去掉了.txt将全部空格,直接用8楼的代码就可以了.

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




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

20楼的方法可以不用去空格,
txt文件每行头尾和中间可有任意空格

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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 27 楼』:  

回复22楼26933062 : 感谢您的回复!

测试结果比较有意思, 有一个文件名被改了, 另外四个没有.
提示: 有文件重复......

[ Last edited by irene6851 on 2009-4-30 at 07:00 ]

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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 28 楼』:  

回复23楼tireless: 感谢您的帮助.

测试结果, 完全符合想要的要求.
也不知道有没有按那三点要求做,
1.  .txt里面的内容文字中间有空格,但是末尾没有.
2. 里面应该没有感叹号.
3. 结尾大多数是如 0-000-00-0000的结构.

十分感谢!

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

批处理编程迷


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

re 楼主
按你给出范例的已经解决了,
实际还不行,那肯定是你给出的范例不具代表性。

要解决问题还是把你的.txt内容多发一点上来,

执行:
dir /b *.pdf>dir.txt

再把dir.txt 的内容也发上来看看。



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





积分 28
发帖 16
注册 2009-4-28
状态 离线
『第 30 楼』:  

回复29楼netbenton, 可能是举例有点简单了, 不好意思!

上传了数个.pdf文件, .txt文件, 打包后的文件夹在论坛里, 原名称是 test.rar, 上传后名称是“1452.rar”。

烦请看看!

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


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



论坛跳转: