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

[文件操作] [已解决]批处理怎样把mp3文件按播放时长归到不同文件夹?

[复制链接]
发表于 2021-10-13 15:14:41 | 显示全部楼层 |阅读模式
本帖最后由 boy1900 于 2021-10-13 21:14 编辑

mp3经过分割后,按文件的时长排序,发现文件的播放时长0-5s不等。
希望把分割后的mp3中0s文件都移动到文件夹0,1s文件都移动到文件夹1………以此类推

说明:
1.文件名是外语录音的课次,与时长无关。比如第一课是 01.mp3
分割后的mp3的文件名是:
01-02.mp3
01-04.mp3
01-06.mp3
等等

2.分割后的mp3的时长会有小数点,精确到小数点后三位。
移动时,舍去小数点后的数字,直接是几秒,就算作几秒。
比如:
0:03.740的算作3s,移动到文件夹3
0:01.241的算作1s,移动到文件夹1
0:02.300的算作2s,移动到文件夹2
发表于 2021-10-13 15:43:18 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:." %%a in ('dir /b *.mp3') do (
  4. set /a name=%%a+0
  5. if not exist !name! md  !name!
  6. move %%a !name!
  7. )
  8. pause
复制代码
假设你的MP3文件名即为时间长度。
 楼主| 发表于 2021-10-13 16:28:35 | 显示全部楼层
本帖最后由 boy1900 于 2021-10-13 16:31 编辑

回复 2# taofan712


    感谢解答!我说明的不够详细。
文件名是外语录音的课次,与时长无关。比如第一课是 01.mp3
分割后的mp3的文件名是:
01-02.mp3
01-04.mp3
01-06.mp3
等等
它们的时长在0-5s不等,可以通过筛选排序。
如果可以表示出每个mp3的时长,再设定一个时间范围,应该可以实现mp3按秒数归类。
发表于 2021-10-13 16:50:10 | 显示全部楼层
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $a=New-Object -ComObject Shell.Application
  3. dir *.mp3|%{
  4. $b=$a.namespace($_.directoryname)
  5. $c=$b.getdetailsof($b.parsename($_.name),27)
  6. $d=([TimeSpan]$c).TotalSeconds
  7. md $d
  8. move $_.name $d
  9. }
复制代码
 楼主| 发表于 2021-10-13 18:55:21 | 显示全部楼层
回复 4# idwma


非常感谢!程序能有效对MP3文件进行归类。
在执行过程中,出现了以下的同名文件夹存在的提示。
可否请大大再优化一下?

md : 具有指定名称 C:\Users\boy1900\默认分割组\1 的项已存在。
所在位置 行:7 字符: 1
+ md $d
+ ~~~~~
    + CategoryInfo          : ResourceExists: (C:\Users\boy1900\默认分割组\1:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand

md : 具有指定名称 C:\Users\boy1900\默认分割组\3 的项已存在。
所在位置 行:7 字符: 1
+ md $d
+ ~~~~~
    + CategoryInfo          : ResourceExists: (C:\Users\boy1900\默认分割组\3:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
发表于 2021-10-13 19:08:17 | 显示全部楼层
回复 5# boy1900
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $a=New-Object -ComObject Shell.Application
  3. dir *.mp3|%{
  4. $b=$a.namespace($_.directoryname)
  5. $c=$b.getdetailsof($b.parsename($_.name),27)
  6. $d=([TimeSpan]$c).TotalSeconds
  7. if(!(test-path $d)){md $d}
  8. move $_.name $d
  9. }
复制代码

评分

参与人数 1技术 +1 收起 理由
boy1900 + 1 乐于助人

查看全部评分

 楼主| 发表于 2021-10-13 21:10:04 | 显示全部楼层
回复 6# idwma


    非常感谢大大的帮助!!
优化过后的执行界面也非常简洁美观,再次感谢!![抱拳]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 02:46 , Processed in 0.032478 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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