我发现以下内容将文件名放入文本文档中,但没有可识别的排序。
dir /b "*.mp4" > files
for "tokens=*" %%i in (files) do move "%%i" !random!.mp4
我希望它们按如下列表顺序排列:
i_ch3_main_20230401030500_20230401030600.mp4
i_ch3_main_20230401004900_20230401005000.mp4
i_ch3_main_20230401023700_20230401023800.mp4
i_ch3_main_20230401050900_20230401051000.mp4
i_ch3_main_20230401040900_20230401041000.mp4
因此,此列表中的第二个实际上会排在第一位,倒数第二个将排在最后,依此类推。(这些是 2023 年、4 月、1 日,然后是军事时间来解释如何按顺序排列。
我的问题是我不希望 5:09 AM 在 4:09 AM 之前显示,等等)。我找不到合适的 CMD 答案。
我也想将其插入
ffmpeg
concat,那么有没有办法将所需的“文件”添加到代码中文本文档的每一行?
这是 PowerShell 中的一个方法,应该可以帮助您实现这一目标:
在包含 .mp4 文件的目录中打开 PowerShell。
输入此命令生成列表:
Get-ChildItem *.mp4 | Sort-Object {$_.Name.Split('_')[3]} | ForEach-Object {"file '$($_.FullName)'" } > files.txt
它的作用如下:
Get-ChildItem *.mp4
获取当前目录中所有 .mp4 文件的列表。
Sort-Object {$_.Name.Split('_')[3]}
根据文件名的第四部分(从 0 开始)对文件进行排序,这是您感兴趣的时间戳。
ForEach-Object {"file '$($_.FullName)'" }
在每个文件名前添加“file”前缀,并包含完整的文件路径。
> files.txt
将列表输出到名为 files.txt 的文件。
完成此操作后,您应该在同一目录中拥有一个名为“files.txt”的文件,每一行如下所示:
file 'C:\path\to\i_ch3_main_20230401004900_20230401005000.mp4'
file 'C:\path\to\i_ch3_main_20230401023700_20230401023800.mp4'
file 'C:\path\to\i_ch3_main_20230401030500_20230401030600.mp4'
file 'C:\path\to\i_ch3_main_20230401040900_20230401041000.mp4'
file 'C:\path\to\i_ch3_main_20230401050900_20230401051000.mp4'
这些可以直接在ffmpeg concat中使用。