使用CMD生成目录中所有文件的txt文件列表,但按顺序

问题描述 投票:0回答:1

我发现以下内容将文件名放入文本文档中,但没有可识别的排序。

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,那么有没有办法将所需的“文件”添加到代码中文本文档的每一行?

sorting cmd sequential
1个回答
0
投票

这是 PowerShell 中的一个方法,应该可以帮助您实现这一目标:

  1. 在包含 .mp4 文件的目录中打开 PowerShell。

  2. 输入此命令生成列表:

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中使用。

© www.soinside.com 2019 - 2024. All rights reserved.