本帖最后由 TAT 于 2022-3-6 16:58 编辑
先简述一下我的思路:
1.由一个或多个给定目录,使用for结合dir获得一个要进行处理的可迭代的文件列表
2.读取并分析其头数据,产生可供程序化操作的属性条目数组。(这一步直接在上句的for中进行即可)
3.根据第二步产生的属性条目数组进行程序化操作,包括取舍等等。无法判断操作的先记录下来,最后特别显示。
我目前影响进度的几个问题:
1.因为觉得有必要,所以(没有直接用dir /s而是用for分步进行)第一步代码暂大致如下:- for /f "tokens=*" %%i in ('dir /ad /b /s "C:\音乐" "D:\音乐D" "E:\音乐"') do (
- for /f "tokens=*" %%x in ('dir /a-d /b "%%i"') do ()
复制代码 其中第二次dir由于部分文件夹不存在文件只有文件夹而导致打印出“找不到文件”这样的信息,现已有方法使其不打印,方法如下:复制代码 由于语句是for的in部分,因此上边用单引号括起来了,不过上述方法在in中会出错,求解。- for /f "tokens=*" %%x in ('dir /a-d /b "%%i" 2>nul') do ()
复制代码 2.此前个人已查阅大量资料,对于windows的文件系统规则已有简单了解。对于读取文件头信息这点有一些想法,还望诸君不吝赐教。
a.在bat中自己写规则,用16进制逐字节读取文件,并对比相关文件格式规则进一步细化翻译出头信息。
很显然,这是重复造轮子的事情。。费力且不讨好。。用C实现倒是可行性大一点,batch、Python这些在这似乎就很不合适。。
b.技术有限,时间有限,轮子搞不了,退而求其次。于是ffmpeg就被我盯上了,不过相关帮助代码实在对小白不太友好。。也不知道是不是我太小白了??- ::命令行: ffprobe [选项] [‘输入文件’]
- ffprobe -hide_banner "E:\桌面\工作文件夹\处处吻 - 杨千嬅.flac"
- pause
复制代码 运行结果如图,.flac头信息都有列出。
ffprobe - 01.png
ffprobe - 02.png
ffprobe打印出的信息不知道如何存入变量,或者就算存入文件也行。。tips:直接用>>会命令报错。。用|也报错。。求教!!
c.ffprobe体积都近百M,在这里无用的代码实在太多了。。特向在座诸君讨教,是否有其他更简单便捷好用的方式方法或者其他什么。
3.图片文件中有些图片之间存在特殊关系:它们拥有重复的部分区域,但不固定,暂且将之称为”孪生“。
“孪生”文件示例如下:
现求一良策,能够简便地对大量图片进行”孪生“关系情况判断。
Tips:要么两个文件互为”孪生“关系,要么不存在另一文件与其组成”孪生“关系。两个文件必然分别为1920*1080和1080*1920两种规格之一。
请尽量使用batch或Python或C实现,因为其他的我可能看不懂。。 |