标题: [文件操作] 批处理如何找到比其长2-3分钟的并移动过去 [打印本页]
作者: 877 时间: 2023-12-3 13:53 标题: 批处理如何找到比其长2-3分钟的并移动过去
E盘\A目录-多子文件夹内各有一个wav
D盘\mp3目录有N个长短不一的mp3歌曲
想实现用批处理,从D盘\mp3目录各移动一个到相应的E盘\A目录下-多子文件夹内。(形成各子文件夹内1个wav和1个mp3)
要求所移动的mp3时长要比wav时长*至少长2-3分钟。
找到长2-3分钟的就移动到对应wav子文件夹
求大佬帮忙写个bat命令,谢谢~
作者: terse 时间: 2023-12-3 15:11
对移动的mp3除了时长要求,没有别的要求了吧
作者: 877 时间: 2023-12-3 16:56
回复 2# terse
是的,就是时长比wav长2-3分钟就行~感谢大佬,上次您给写过一次,是比其长一点,想具体到长2-3分钟~,谢谢大佬~
作者: terse 时间: 2023-12-3 18:22
- @set @x=0 /* & @echo off
- cd /d "d:\mp3\"
- dir /b /a-d *.mp3|cscript -nologo -e:jscript %0 "e:\a\"
- pause & exit */
- var WMP = new ActiveXObject("WMPlayer.OCX");
- var i = 0; mediafiles = [];
- var Arg = WSH.Arguments;
- while (!WSH.StdIn.AtEndOfStream) {
- var file = WSH.StdIn.ReadLine();
- mediafiles[i++] = ({file: file, duration: Math.floor(WMP.newMedia(file).GetItemInfo("Duration"))});
- }
- mediafiles.sort(function(a, b) { return a.duration - b.duration; });
- function binarySearch(mediafiles, t) {
- var left = 0, right = mediafiles.length - 1;
- while (left < right) {
- var mid = Math.floor((left + right) >> 1);
- if (mediafiles[mid].duration > t) {
- right = mid;
- } else {
- left = mid + 1;
- }
- }
- return (left < mediafiles.length) ? left : null;
- }
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var ss = 150;
- var folder = fso.GetFolder(Arg.Item(0));
- var subfolders = new Enumerator(folder.Subfolders);
- for (; !subfolders.atEnd(); subfolders.moveNext()) {
- var subfolder = subfolders.item();
- var files = new Enumerator(subfolder.files);
- for (; !files.atEnd(); files.moveNext()) {
- var file = files.item();
- var ext = file.Name.slice(file.Name.lastIndexOf(".")+1).toLowerCase();
- if (ext === 'wav') {
- var duration = Math.floor(WMP.newMedia(file.Path).GetItemInfo("Duration"));
- var Index = binarySearch(mediafiles, duration + ss);
- if (Index !== null) {
- fso.CopyFile(mediafiles[Index].file, subfolder + '\\');
- WSH.Echo(mediafiles[Index].file, ' ==> ' ,subfolder);
- mediafiles.splice(Index, 1);
- }
- }
- }
- }
复制代码
回复 3# 877
作者: 877 时间: 2023-12-3 22:43
回复 4# terse
感谢大佬,技术真牛,非常厉害!谢谢您!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |