找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 76646|回复: 23

[文件操作] 求BAT批量生成所有子文件夹里面的文件名并分别保存至该子文件夹

[复制链接]
发表于 2018-5-3 20:22:29 | 显示全部楼层 |阅读模式
本帖最后由 missle3000 于 2018-5-4 08:44 编辑

求高手帮忙
某个文件夹下面有N个子文件夹,每个子文件夹里面都有很多不同类型的文件,目标是:每个子文件夹里面的后缀名为flac的文件生成一个文件名列表文件(后缀为m3u),并保存在该子文件夹目录里面,名字为该子文件夹名字
例如,其中一个名字叫:流行歌曲的子文件夹,需要该子文件夹里面生成一个:流行歌曲.M3U的文件,这个文件里面的内容是该子文件夹里面所有后缀名为flac的文件名列表
当然,每个子文件夹的名字都不同,生成的文件名字也要不同,跟该文件夹名字相同

再加一个要求:生成的M3U文件的编码是UTF-8
发表于 2018-5-3 20:39:53 | 显示全部楼层
本帖最后由 WHY 于 2018-5-3 20:44 编辑
  1. @echo off
  2. for /r %%i in (*.flac) do (
  3.     for %%j in ("%%i\..") do echo;%%~nxi >> "%%~dpi%%~nxj.m3u"
  4. )
  5. pause
复制代码
 楼主| 发表于 2018-5-3 20:44:38 | 显示全部楼层
本帖最后由 missle3000 于 2018-5-3 21:52 编辑

回复 2# WHY
非常感谢,给我省了好多时间
 楼主| 发表于 2018-5-3 21:54:14 | 显示全部楼层
回复 2# WHY

感谢您的代码,另外如果保存的这个文件如果需要以UTF-8这个编码保存,能顺带一并解决吗
发表于 2018-5-3 23:02:34 | 显示全部楼层
本帖最后由 WHY 于 2018-5-4 09:46 编辑

  1. @echo off
  2. PowerShell -c "dir . *.flac -Recurse|group DirectoryName|%%{sc -Literal ($_.Name -replace '[^\\]+$','$0\$0.m3u') -Value ($_.Group|select -Exp Name) -Enc UTF8}"
  3. pause
复制代码
 楼主| 发表于 2018-5-3 23:12:22 | 显示全部楼层
回复 5# WHY


   这个不行,不生成任何文件
发表于 2018-5-4 09:41:34 | 显示全部楼层
回复 6# missle3000


    已改,Win7下可以用了
 楼主| 发表于 2018-5-4 09:59:03 | 显示全部楼层
本帖最后由 missle3000 于 2018-5-4 10:00 编辑

回复 7# WHY


    感谢,麻烦支付宝账号给我,略表谢意,另外,如果还存在其他格式,可以一起生成的话 需要怎么改,加上wav,mp3,wma,就是说只要存在flac,wav,mp3,wma这四种文件,就一起生成
发表于 2018-5-4 10:32:33 | 显示全部楼层
本帖最后由 WHY 于 2018-5-4 10:44 编辑

回复 8# missle3000


    那敢情好,支付宝账号短信给你。

遍历多种格式文件:
  1. 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}"
复制代码
 楼主| 发表于 2018-5-4 10:47:41 | 显示全部楼层
回复 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

改成这样 提示出错,麻烦再看看哪里问题
 楼主| 发表于 2018-5-4 10:54:46 | 显示全部楼层
回复 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文件进行列表,列完再对下一种类型文件进行列表,我需要的是不管什么文件类型,统一按照文件名为顺序进行列表

支付宝已转谢意
发表于 2018-5-4 11:29:13 | 显示全部楼层
回复 11# missle3000


    PowerShell 遍历文件默认就是按文件名排序的,不知道是不是你的系统问题。
这样应该可以:
  1. 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}"
复制代码
 楼主| 发表于 2018-5-4 11:42:48 | 显示全部楼层
回复 12# WHY


    这样可以了,非常感谢,程序虽小,却能节省很多时间
 楼主| 发表于 2018-5-4 11:47:45 | 显示全部楼层
回复 12# WHY


另外麻烦再发一个 不需要转成UTF-8编码的,就默认的,因为有小部分机器兼容默认的 不兼容UTF-8,谢谢
发表于 2018-5-4 14:34:35 | 显示全部楼层
回复 14# missle3000


    12楼后面的 -Enc UTF8 删掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 20:15 , Processed in 0.017146 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表