中国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文件,可否批量处理? 上一主题 | 下一主题
tireless
银牌会员





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

你上传的附件中的 a.txt 里面每行末尾都有一个空格,如果实际是这样的话,把 23 楼的改成:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (a.txt) do (
  set var=%%a
  ren "!var:~-14,1!!var:~-12,3!!var:~-8,2!!var:~-5,4!?????.pdf" "!var:~,5!_!var:~-14,-1!_!var:~6,-15!.pdf"
)
另,4.2.8 显示输入单元PC 2x / 5x / 8x IPC 5.4.0.0 / IPC 5.5.0.0 9-082-42-8110,其中的 / 不能作为文件名,要手工把文本中的 / 替换掉,或者把代码中的 set var=%%a 改成 set var=%%a&set var=!var:/=/!

[ Last edited by tireless on 2009-4-30 at 12:07 ]

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

批处理编程迷


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

楼主上传的内容是想得到什么结果,最好能一并说明,才好解决

如果想改成这样一个文件名:
4.2.8 显示输入单元PC 2x / 5x / 8x IPC 5.4.0.0 / IPC 5.5.0.0 9-082-42-8110
那是不可能的。



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-30 12:28
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
26933062
银牌会员





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

估计他的pdf文件名应该有 “10位数字相同加不同的5位字母” 的格式,
比如 1234567890abcd.pdf 和 1234567890efghi.pdf
那么用ren 数字????? 的方式应该是完不成的。
关键是有10万个,必须考虑效率问题啊。
另外楼主的txt文件内容和pdf文件是一一相对的吗?没有多余的行?
还有你们是怎么下载的附件啊?
楼主在11楼说问题解决,16楼又给出了新的样本?
新样本中需要按怎样的格式重命名文件呢?



致精致简!
2009-4-30 13:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
irene6851
初级用户





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

回复31-32楼的朋友们:今天是五一节, 没想到你们都在!真是很意外!

回复31楼tireless: 谢谢您的建议,“/”符号和空格可以手动去掉。现在您的两个方案, 我都保留,不断用新的内容会去测试。 十分感谢!

回复32楼netbenton: 测试过10楼您自己打包的文件,全部文件改名都OK。 但是, 测试我要的文件时, 出现问题。所以,我在30楼说,将我要的文件打包上传, 想请您和各位也可实际测试一下代码的效果。 符号/的问题,我会注意去掉的。谢谢哦!

回复32楼netbenton:
回复33楼26933062:
重新命名的文件名格式是: 数字.数字.数字_(下划线)一位数字-三位数字-两位数字-四位数字_(下划线)文字描述(只有中文;有中文和英文;有中文和英文和数字三种情况).pdf
例如: 0.0.0_1-234-56-7890_掌上明珠.pdf

txt文件内容和pdf文件是一一相对,没有多余的行,和上传打包里面的的a.txt是一样的。如下:
4.1.1 接通机器KF,FL,KL,VF 9-082-41-1071
4.1.1 启动机床PC22 9-082-41-1091
4.2.8 显示输入单元PC2x / 5x / 8x IPC5.4.0.0 / IPC5.5.0.0 9-082-42-8110
4.3.1 schuler机床数据采集系统BASIC 9-082-43-1002
4.7.2 PC22开始菜单 9-082-47-2011
第三行里面的“/”没有手动去掉, 是想保持一个“原生态”给各位参考一下。

11楼讲的是测试结果。目前测试过,达到想要效果的有23楼的代码,8楼的代码文件名的顺序有点不一样。从31楼开始的代码会稍后再测。

[ Last edited by irene6851 on 2009-4-30 at 23:35 ]

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





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

你上传的 1452.rar 里面的 a.txt 每行末尾确实有一个空格。

2009-4-30 23:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
irene6851
初级用户





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

O...又查了一次, 的确有空格,不好意思!

删除那一句。

[ Last edited by irene6851 on 2009-4-30 at 23:24 ]

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




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

1.复制下面代码,保存为re.js到a.txt所在目录运行.
2.运行生成的js.bat.
srcfl="a.txt"
fso=new ActiveXObject("scripting.filesystemobject")
sss=fso.opentextfile(srcfl,1).readall();
sss=sss.replace(/\\/g,"\");
sss=sss.replace(/\//g,"/");
sss=sss.replace(/:/g,":");
sss=sss.replace(/\*/g,"*");
sss=sss.replace(/</g,"〈");
sss=sss.replace(/>/g,"〉");
sss=sss.replace(/\|/g,"|");
sss=sss.replace(/^\s*(\d.\d.\d)\s*(\S.*\S)\s*(\d)\s*-\s*(\d\d\d)\s*-\s*(\d\d)\s*-\s*(\d\d\d\d)\s*$/gmi,"ren \"$3$4$5$6*.pdf\"   \"$1_$3$4$5$6_$2.pdf\"\r\n")
fso.createtextfile("js.bat").write(sss)
注:
     1.a.txt中的文件名可以是以下形式(处理后文件名为"4.1.1_9082411071_接通机器KF, FL, KL, VF.pdf")
     "  4.1.1 接通机器KF, FL, KL, VF 9-082-41-1071   "
     "4.1.1   接通机器KF, FL, KL, VF  9 - 082 - 41 - 1071  "
     "4.1.1接通机器KF, FL, KL, VF 9-082-      41-     1071 "
     "4.1.1接通机器KF, FL, KL, VF9-082-41    -1071 "

      
     2.如果a.txt中含有\/:*?"<>等非法字符,脚本将自动替换成对应的中文符号

[ Last edited by freeants001 on 2009-5-1 at 01:45 ]

2009-5-1 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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

就你给的样本文件,测试是成功的。但需删除每行末尾的空格。
txt中的 / 符号不是合法的文件名,代码中自动将其替换为#号。
还是那句话,所有pdf文件中,不能有10位数字顺序一样的情况
比如:1234567890abcde.pdf 和 1234567890efghi.pdf
      数字部分完全一样,只有字母不同,就不行。
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims= " %%a in (a.txt) do (
   for /f "tokens=1* delims=-" %%i in ("%%b") do (
      set var=%%i&set "var2=%%j"&set "var=!var:/=#!"
      set "num=!var:~-1!!var2:-=!"
      ren "!num!?????.pdf" "%%a_!var:~-1!-!var2!_!var:~0,-2!.pdf"
))
pause




致精致简!
2009-5-1 05:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 39 楼』:  

这样呢?
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1*" %%a in (a.txt) do (
      set "str=%%b"
      set "var=%%~nb"
      set var=!var:~-13!
      set "str=!str:~,-15!"
      echo ren "!var:-=!?????.pdf" "%%a_!var! _!str:/=#!.pdf"
)
pause




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


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



论坛跳转: