如何用一个批处理bat生成某文件夹和子文件夹下所有文件的绝对路径,分别写入到对应的txt中(一对一生成)

[复制链接]
查看11 | 回复9 | 2011-9-26 12:17:17 | 显示全部楼层 |阅读模式
我有个“E:\\影视”文件夹,里面有若干层(10层以内)的子文件夹,如“电影”“电视剧”“动画片”之类,下面又分别是“中国电影”“美国电影”“韩剧”“国产剧”之类,其下是以电影名称命名的文件夹,如“变形金刚”“千与千寻”“潜伏”等,再里面是具体的影视文件,如“第1部.rmvb”、“上集.avi”,“第3集.f4v”,之类。现在,我在“影视”文件夹下新建了“播放列表汇总”文件夹,要求通过一个批处理文件,达到:1.“影视”文件夹下的所有影音文件,每一个文件都对应生成一个txt文件(即假如共有100个影音文件,则生成100个对应的txt文件):A.该txt的文件命名规则是“上层文件夹名_这个影音文件名的前缀.mpcpl”(如“变形金刚_第1部.mpcpl”“千与千寻_上集”“潜伏_第3集.mpcpl”。B.该txt文件的保存位置,全部保存到“E:\\影音\\播放列表汇总”文件夹中(有同名文件则覆盖)。C.该txt文件的内容是这个影音文件的绝对路径,如(“E:\\影音\\电影\\美国电影\\变形金刚\\第1部.rmvb”,“E:\\影音\\动画片\\日本\\千与千寻\\上集.avi”“E:\\影音\\电视剧\\国产剧\\潜伏\\第3集.f4v”,并且遵循下面的格式:-----分隔线---内容从下一行开始,无空行----MPCPLAYLIST1,type,01,filename,E:\\影音\\动画片\\日本\\千与千寻\\上集.avi-----分隔线---内容到上一行结束,无空行--------对上面内容说明:1.分3行,第1行和第2行,以及第3行的“1,filename,”都保持不变;2.第3行的第二个逗号后面的路径“E:\\影音\\动画片\\日本\\千与千寻\\上集.avi”,是该txt文件所对应的这个影音文件的绝对路径,每个文件都不一样。求高手给出这个批处理文件的代码。不胜感激。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
@echooffset\"x=播放列表汇总\"2nul(md%x%for/r%%iin(*)do(for%%jin(\"%%~fi\\..\")do((echo;MPCPLAYLISTecho;1,type,0echo;1,filename,%%~fi)%x%\\%%~nxj_%%~ni.mpcpl))del%x%\\影视*%x%\\%x%*)pause放在\"E:\\影视\"同目录下执行即可。。。追问感谢您,我的补充问题无法显示,向您直接求助。代码改进要求:一、生成txt内容里的第3行路径改为相对路径,即原“1,filename,E:\\影音\\动画片\\日本\\千与千寻\\上集.avi”改为“1,filename,..\\影音\\动画片\\日本\\千与千寻\\上集.avi”。二、排除“播放列表文件夹”,通过把它提升到“影音”文件夹外,问题已解决。三、只对特定后缀名的影音文件进行播放列表的生成,如*.avi、*.rm…,其它后缀名的文件不生成。求改进代码。再谢。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
1、我不明白你这个相对路径“..\\影音\\动画片\\日本\\千与千寻\\上集.avi”是相对于什么文件的路径。。。如果相对于批处理文件所在的路径(E:\\影视),那应该是“动画片\\日本\\千与千寻\\上集.avi”。。。不知道你所说的相对路径是相对什么文件的路径。。还是只是单纯的想把E:\\改成..\\。。2、依然不明白你表达的意思。。是不想生成“播放列表汇总”文件夹而是想把生成的播放列表放到“E:\\影音”下吗?。。。。3、这个可以改。。。先把前面的描述清楚。。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
您好!因追问有字数限制,所以没表述清楚。1.“播放列表汇总”文件夹原先在“影音”文件夹下一级,现决定移出来,提升到跟“影音文件夹”同级,并列。原因:若在“影音”内,则执行代码时会对此文件夹内的文件也生成txt,这是不需要的。所以提一级。“..\\影音\\……”这个路径,就是针对改动后的“播放列表汇总”文件夹与“影音”文件夹的相对关系。(另外,使用相对路径也是为了便于移植。)2.通过1问题已解决可忽略。3.同前。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
@echooffset\"x=播放列表汇总\"2nul(md%x%for/r\"影视\\\"%%iin(*.avi*.rm)do(for%%jin(\"%%~fi\\..\")do((echo;MPCPLAYLISTecho;1,type,0echo;1,filename,..%%~pnxi)%x%\\%%~nxj_%%~ni.mpcpl)))pause放在\"E:\\\"下执行即可。。。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
感谢您的耐心答复,代码试了可以,非常感谢。但有2点:一、最后相对路径的代码部分不是很准确,是直接去除了e:,不是依据“播放列表汇总”文件夹的上一层来判断的,比如我把“影音”和“播放列表汇总”(这两个原先同在e:下)都复制到“e:\\a\\”中,按理说,这时“影音”和“播放列表汇总”的相对路径是不变的,txt文本中应反映出来,但实际运行效果,路径错了。二、能否把bat文件放在\"E:\\\"执行,改成可放在任意目录运行。再谢
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
@echooffnul(md%x%for/r\"%y%\"%%iin(*.txt)do(for%%jin(\"%%~fi\\..\")do(set\"a=%%~fi\"(echo;MPCPLAYLISTecho;1,type,0echo;1,filename,..!a:%z%=!)%x%\\%%~nxj_%%~ni.mpcpl)))pause可放在任意目录运行。。。。。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
批处理代码如下:(保存为bat文件,放在任意目录运行)::═════代═══码═══开═══始═════@echooffnul2nulfor/f\"delims=\"%%iin(\'dir/a-d/b/s*.*\')do(IF/inot\"%%~dpi\"==\"E:\\影视\\\"(setp=%%~dpi\"!name!\"echo1,type,0\"!name!\"echo1,filename,%%i\"!name!\"))md\"E:\\影视\\播放列表汇总\"nul2nulmove/y\"*.mpcpl\"\"E:\\影视\\播放列表汇总\\\"nulpause::CreatedByescortmnmfromVBS团队::═════代═══码═══结═══束═════追问感谢您,我的补充问题无法显示,向您直接求助。代码改进要求:一、生成txt内容里的第3行路径改为相对路径,即原“1,filename,E:\\影音\\动画片\\日本\\千与千寻\\上集.avi”改为“1,filename,..\\影音\\动画片\\日本\\千与千寻\\上集.avi”。二、排除“播放列表文件夹”,通过把它提升到“影音”文件夹外,问题已解决。三、只对特定后缀名的影音文件进行播放列表的生成,如*.avi、*.rm…,其它后缀名的文件不生成。求改进代码。再谢。
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
楼顶的兄台!这个问题你算是问对人啦直接到【扣扣电影网】里面什么都有!自己去看吧有几万部电影!你一辈子也看不完啦!采纳吧
回复

使用道具 举报

千问 | 2011-9-26 12:17:17 | 显示全部楼层
这位网友!这个方面内容是我熟悉的领域哟WER。www.DVD186.com。NTR新还珠格格更新速度最快的网站是哪个网站,你门有谁知道我和朋友们每天都在这里看!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行