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

我有个“E:\影视”文件夹,里面有若干层(10层以内)的子文件夹,如“电影”“电视剧”“动画片”之类,下面又分别是“中国电影”“美国电影”“韩剧”“国产剧”之类,其下是以... 我有个“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”,并且遵循下面的格式:
----- 分隔线---内容从下一行开始,无空行----

MPCPLAYLIST
1,type,0
1,filename,E:\影音\动画片\日本\千与千寻\上集.avi

----- 分隔线---内容到上一行结束,无空行--------
对上面内容说明:
1.分3行,第1行和第2行,以及第3行的“1,filename,”都保持不变;
2.第3行的第二个逗号后面的路径“E:\影音\动画片\日本\千与千寻\上集.avi”,是该txt文件所对应的这个影音文件的绝对路径,每个文件都不一样。

求高手给出这个批处理文件的代码。不胜感激。
展开
 我来答
JooKin
2011-09-18 · TA获得超过687个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:382万
展开全部
@echo off
set "x=播放列表汇总"
2>nul (md %x%
for /r %%i in (*) do (
for %%j in ("%%~fi\..") do (
(echo;MPCPLAYLIST
echo;1,type,0
echo;1,filename,%%~fi)>%x%\%%~nxj_%%~ni.mpcpl
)
)
del %x%\影视* %x%\%x%*)
pause

放在"E:\影视"同目录下执行即可。。。
更多追问追答
追问
感谢您,我的补充问题无法显示,向您直接求助。代码改进要求:一、生成txt内容里的第3行路径改为相对路径,即原“1,filename,E:\影音\动画片\日本\千与千寻\上集.avi”改为“1,filename,..\影音\动画片\日本\千与千寻\上集.avi”。二、排除“播放列表文件夹”,通过把它提升到“影音”文件夹外,问题已解决。三、只对特定后缀名的影音文件进行播放列表的生成,如*.avi、*.rm…,其它后缀名的文件不生成。求改进代码。再谢。
追答
1、我不明白你这个相对路径“..\影音\动画片\日本\千与千寻\上集.avi”是相对于什么文件的路径。。。如果相对于批处理文件所在的路径(E:\影视),那应该是“动画片\日本\千与千寻\上集.avi”。。。不知道你所说的相对路径是相对什么文件的路径。。还是只是单纯的想把E:\改成..\。。
2、依然不明白你表达的意思。。是不想生成“播放列表汇总”文件夹而是想把生成的播放列表放到“E:\影音”下吗?。。。。
3、这个可以改。。。先把前面的描述清楚。。
escortmnm
2011-09-19 · TA获得超过3393个赞
知道大有可为答主
回答量:1890
采纳率:0%
帮助的人:3274万
展开全部
批处理代码如下:(保存为bat文件,放在任意目录运行)
::═════代═══码═══开═══始═════
@echo off&setlocal enabledelayedexpansion
cd /d "E:\影视"
rd /s/q "E:\影视\播放列表汇总">nul 2>nul
for /f "delims=" %%i in ('dir /a-d/b/s *.*') do (
IF /i not "%%~dpi"=="E:\影视\" (
set p=%%~dpi&set p=!p:~,-1!
for /f "delims=" %%a in ("!p!") do set name=E:\影视\%%~nxa_%%~ni.mpcpl
echo MPCPLAYLIST >"!name!"
echo 1,type,0 >>"!name!"
echo 1,filename,%%i >>"!name!"))
md "E:\影视\播放列表汇总" >nul 2>nul
move /y "*.mpcpl" "E:\影视\播放列表汇总\">nul
pause
::Created By escortmnm from VBS团队
::═════代═══码═══结═══束═════
追问
感谢您,我的补充问题无法显示,向您直接求助。代码改进要求:一、生成txt内容里的第3行路径改为相对路径,即原“1,filename,E:\影音\动画片\日本\千与千寻\上集.avi”改为“1,filename,..\影音\动画片\日本\千与千寻\上集.avi”。二、排除“播放列表文件夹”,通过把它提升到“影音”文件夹外,问题已解决。三、只对特定后缀名的影音文件进行播放列表的生成,如*.avi、*.rm…,其它后缀名的文件不生成。求改进代码。再谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式