标题: [文件操作] 求BAT批量生成所有子文件夹里面的文件名并分别保存至该子文件夹 [打印本页]
作者: missle3000 时间: 2018-5-3 20:22 标题: 求BAT批量生成所有子文件夹里面的文件名并分别保存至该子文件夹
本帖最后由 missle3000 于 2018-5-4 08:44 编辑
求高手帮忙
某个文件夹下面有N个子文件夹,每个子文件夹里面都有很多不同类型的文件,目标是:每个子文件夹里面的后缀名为flac的文件生成一个文件名列表文件(后缀为m3u),并保存在该子文件夹目录里面,名字为该子文件夹名字
例如,其中一个名字叫:流行歌曲的子文件夹,需要该子文件夹里面生成一个:流行歌曲.M3U的文件,这个文件里面的内容是该子文件夹里面所有后缀名为flac的文件名列表
当然,每个子文件夹的名字都不同,生成的文件名字也要不同,跟该文件夹名字相同
再加一个要求:生成的M3U文件的编码是UTF-8
作者: WHY 时间: 2018-5-3 20:39
本帖最后由 WHY 于 2018-5-3 20:44 编辑
- @echo off
- for /r %%i in (*.flac) do (
- for %%j in ("%%i\..") do echo;%%~nxi >> "%%~dpi%%~nxj.m3u"
- )
- pause
复制代码
作者: missle3000 时间: 2018-5-3 20:44
本帖最后由 missle3000 于 2018-5-3 21:52 编辑
回复 2# WHY
非常感谢,给我省了好多时间
作者: missle3000 时间: 2018-5-3 21:54
回复 2# WHY
感谢您的代码,另外如果保存的这个文件如果需要以UTF-8这个编码保存,能顺带一并解决吗
作者: WHY 时间: 2018-5-3 23:02
本帖最后由 WHY 于 2018-5-4 09:46 编辑
- @echo off
- PowerShell -c "dir . *.flac -Recurse|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
- pause
复制代码
作者: missle3000 时间: 2018-5-3 23:12
回复 5# WHY
这个不行,不生成任何文件
作者: WHY 时间: 2018-5-4 09:41
回复 6# missle3000
已改,Win7下可以用了
作者: missle3000 时间: 2018-5-4 09:59
本帖最后由 missle3000 于 2018-5-4 10:00 编辑
回复 7# WHY
感谢,麻烦支付宝账号给我,略表谢意,另外,如果还存在其他格式,可以一起生成的话 需要怎么改,加上wav,mp3,wma,就是说只要存在flac,wav,mp3,wma这四种文件,就一起生成
作者: WHY 时间: 2018-5-4 10:32
本帖最后由 WHY 于 2018-5-4 10:44 编辑
回复 8# missle3000
那敢情好,支付宝账号短信给你。
遍历多种格式文件:- PowerShell -c "dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
复制代码
作者: missle3000 时间: 2018-5-4 10:47
回复 9# WHY
@echo off
PowerShell -c "dir. *.flac, *.wav, *.mp3, *.wma -Recurse|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
pause
改成这样 提示出错,麻烦再看看哪里问题
作者: missle3000 时间: 2018-5-4 10:54
回复 9# WHY
您后来改的 PowerShell -c "dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
这样是可以了,但是列表文件不是按文件名顺序排列的,是先对flac文件进行列表,列完再对下一种类型文件进行列表,我需要的是不管什么文件类型,统一按照文件名为顺序进行列表
支付宝已转谢意
作者: WHY 时间: 2018-5-4 11:29
回复 11# missle3000
PowerShell 遍历文件默认就是按文件名排序的,不知道是不是你的系统问题。
这样应该可以:- PowerShell -c "dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|sort Name|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
复制代码
作者: missle3000 时间: 2018-5-4 11:42
回复 12# WHY
这样可以了,非常感谢,程序虽小,却能节省很多时间
作者: missle3000 时间: 2018-5-4 11:47
回复 12# WHY
另外麻烦再发一个 不需要转成UTF-8编码的,就默认的,因为有小部分机器兼容默认的 不兼容UTF-8,谢谢
作者: WHY 时间: 2018-5-4 14:34
回复 14# missle3000
12楼后面的 -Enc UTF8 删掉
作者: missle3000 时间: 2018-5-4 16:27
回复 15# WHY
谢谢
作者: missle3000 时间: 2018-10-21 14:28
本帖最后由 missle3000 于 2018-10-21 14:30 编辑
回复 15# WHY
您好,上次您帮我做的批处理程序非常好用,现在需要稍微修改一下
要求1.在每个生成的M3U文档里面的内容最前面添加一行,内容是:#EXTM3U
要求2.在满足(要求1)的基础上,在该总目录下多生成一个总的M3U文件,就是对该目录下的所有文件夹里的内容做一个汇总
要求3.生成的M3U文档全部放在根目录下,而不是放在每个文件夹里面,M3U的要求参考(要求1)和(要求2)
请参考3个要求做成三个独立的批处理程序
麻烦您了,做好了还会酬谢您
作者: WHY 时间: 2018-10-21 16:40
本帖最后由 WHY 于 2018-10-22 10:52 编辑
回复 17# missle3000
要求1:- @echo off
- PowerShell "$a=,'#EXTM3U'; dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|sort Name|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($a+($_.Group|select -Exp Name)) -Enc UTF8}"
- pause
复制代码
要求2:- @echo off
- PowerShell "$a=,'#EXTM3U';$L='%~dp0'.Length;dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|sort Name|group DirectoryName|%%{$b+=$_.Group|%%{$_.FullName.SubString($L)};sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($a+($_.Group|%%{$_.Name})) -Enc UTF8};sc '汇总.m3u' -Value ($a+$b) -Enc UTF8"
- pause
复制代码
要求3,不考虑文件重名:- @echo off
- PowerShell "$a=,'#EXTM3U';$L='%~dp0'.Length;dir . -Include *.flac, *.wav, *.wma, *.mp3 -Recurse|sort Name|group DirectoryName|%%{$v=$_.Group|%%{$_.FullName.SubString($L)};sc -Literal (($_.Name -replace '.*\\')+'.m3u') -Value ($a+$v) -Enc UTF8; $b+=$v};sc '汇总.m3u' -Value ($a+$b) -Enc UTF8"
- pause
复制代码
作者: missle3000 时间: 2018-10-21 22:40
回复 18# WHY
您好 可能我没说清楚,还有点问题
要求一.生成的M3U文件里面的文件名不是按照文件名来排序的
要求二.汇总这个M3U文件里面的文件名没有带路径,比如文件夹:2018年 这个文件夹里的第一个文件名称是:01.苏州.jpg,那么汇总M3U 里体现的名字应该是:2018\01.苏州.jpg
要求三 跟要求二一样,只要m3u不在该文件夹里面,放在文件夹外面了就要带路径
麻烦您有时间再调整一下
作者: WHY 时间: 2018-10-22 10:51
回复 19# missle3000
已修改
作者: missle3000 时间: 2018-10-22 11:07
回复 20# WHY
您好。要求一可以了, 要求二和要求三的 汇总M3U里的文件夹顺序没有按照文件名排序
作者: WHY 时间: 2018-10-22 11:35
请把你的问题一次性说清楚,真是麻烦
sort Name 改成 sort FullName
作者: missle3000 时间: 2018-10-22 14:57
回复 22# WHY
可以了,不好意思,给您添麻烦了。
麻烦私聊我您的支付宝账号
作者: WHY 时间: 2018-10-22 16:07
回复 23# missle3000
好的,支付宝账号发短信给你了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |