如何在批处理脚本中找到m3u播放列表文件大小?

mk117

我正在尝试在目录中查找m3u播放列表文件的文件大小。我不知道批处理脚本的正确语法,因此以下代码可能无法正常运行。

我需要有关此脚本的帮助。

FOR /f %f in ('dir /b') DO {
  SET %filesize% = 0
  FOR /F %i in (%f) DO {
   If %i~1,1% equ ":" AND %i~2,1% equ "\" (%filesize% = %filesize% + %~z1)
  }
 echo %f [%filesize%] & echo. > PlaylistsList.txt
}
  1. 第一行在基本目录中扫描m3u文件,
  2. 第二行将变量文件大小设置为0,这样就不会在每个循环中不断添加变量。
  3. 第三行将每个m3u播放列表文件作为文本文件输入,以便在另一个循环中进行处理。
  4. 第四行通过"C:\music\"来比较2ndand3rd字符检查文件路径格式是否为格式然后,为在m3u播放列表文件中找到的每个文件添加文件大小。:\
  5. 最后,文件名将与文件大小一起回显。

因此,PlaylistsList.txt中的输出为:

Rock.m3u [900 mb]

Electronic.m3u [500 mb]

Acoustic.m3u [150 mb]

phuclv

首先,批处理文件中for循环中的变量名称必须以2 %s开头因此,请在变量中插入更多百分号。其次,将您的图块放在括号内(),而不是{}


另一个问题是您的set命令。set中的变量名称不能用百分号括起来,并且分配的值必须在等号之后,否则您变量的实际值将包含前面的空格。正确的方法是这样的:SET filesize=0SET "filesize=0"

您还要一次又一次地添加第一个参数的文件大小(注意,z1此处不是zi

%filesize% = %filesize% + %~z1

您必须使用获取列表中文件的大小,%~zi并将其添加到总和中。但是,您不能像上面那样直接进行数学运算。使用set /a替代

set /a filesize += %%~zi

而且您正在错误地读取m3u文件内容。要从文本文件中读取一行,请使用这种方式

for /F "tokens=*" %%L in (%%f) do [command]

我不明白你在这行中的第4条。您想检查行是否以开头,C:\music\但是您要检查第二个字符是否是:,第三个字符是否\这有几个问题:

  • IF 不支持多种条件,例如 AND
  • 您不能在for循环中为变量添加字符串,因为它不会像普通变量一样被百分号包围。

要子字符串化,请先将值分配给普通变量:set line=%%L要检查这两种情况,有几种类似的解决方法,但是您的情况只是检查单个字符串,因此您无需检查单独的字符。if "!line:~1,2!"==":\"如果需要上述行为,请使用此方法;如果要if /i "!line:~0,2!"=="C:\music\"检查您提到的文件夹,请使用/i不区分大小写的检查方法。for循环中的变量必须用包围,!!以使其在运行时扩展。记住setlocal EnableDelayedExpansion一开始要使用

最后,您不需要这样做,& echo.因为echo总是在打印后放置换行符。但是您必须使用它>>来追加输出文件,否则每次重定向时它都会擦除旧内容echo


现在要进行文件大小调整,您需要自己进行数学运算,因为文件大小只是一个数值。请注意,没有称为的数据大小单位mb如果要MiB(在Windows中为MB)除以1024,然后除以1000得到MB。

所以脚本应该看起来像这样

setlocal EnableDelayedExpansion

for /f %%f in ('dir /b') DO (
    set filesize=0
    for /F "tokens=*" %%L in (%%f) do (
        set line=%%L
        if "!line:~1,2!"==":\" set /a filesize += %%~zL
    )
)
set /a filesize /= 1024
echo %%f [%filesize% MB] >> PlaylistsList.txt

奖励:如果需要舍入后的文件大小结果,请使用

set divisor=1024
set /a filesize = (%filesize% + %divisor%/2) / %divisor%

编辑:

为了容纳长文件名,第二个for循环应usebackq像这样使用

for /F "usebackq tokens=*" %%L in ('%%f') do (

另一种方法是调用另一个函数来获取文件大小

set line=%%L
CALL :FileSize "%%L"
if "!line:~1,2!"==":\" set /a filesize += %%~zL

:FileSize
SET filesize=%~z1

一个重要的注意事项是,inset使用的变量是32位有符号的int,因此,如果总大小超过2GB,它将不起作用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Windows批处理.bat自动.m3u播放列表的创建/更新

来自分类Dev

如何从子文件夹中的所有文件制作随机 m3u 播放列表?

来自分类Dev

m3u播放列表删除目录

来自分类Dev

Android没有看到播放列表(.m3u)文件

来自分类Dev

如何从终端生成M3U播放列表(http URL格式)?

来自分类Dev

如何在m3u8播放列表中重命名ts文件

来自分类Dev

媒体元素音频播放器-嵌入M3U播放列表

来自分类Dev

在M3U播放列表中指定文件的相对路径的正确方法是什么?

来自分类Dev

正确格式化M3U播放列表

来自分类Dev

将频道编号添加到M3U播放列表

来自分类Dev

Python从m3u播放列表中删除重复项

来自分类Dev

如何在批处理脚本中找到错误?

来自分类Dev

ffmpeg:如何在 m3u8 播放列表中包含动态路径?(播放列表和片段位于不同的目录中。)

来自分类Dev

批量处理多个m3u文件

来自分类Dev

m3u文件中的处理路径

来自分类Dev

如何使用ffmpeg加密AES-128 HLS m3u8播放列表?

来自分类Dev

Video.js,如何动态更新m3u8播放列表

来自分类Dev

如何从iframe嵌入代码获取m3u8播放列表

来自分类Dev

chromecast会播放m3u8播放列表中的媒体片段文件(.ts)吗?

来自分类Dev

如果未找到ENDLIST键,m3u8播放列表是否支持seekto功能

来自分类Dev

在Windows Phone 8.1上播放HLS(m3u8播放列表)

来自分类Dev

从浏览器播放M3U

来自分类Dev

如何从播放列表播放每个文件的前n秒

来自分类Dev

PHP-如何通过流URL的公共部分匹配来自两个m3u8播放列表的流?

来自分类Dev

如何使用FFMPEG创建持续时间固定的m3u8播放列表和mpeg-ts块?

来自分类Dev

如何在Shell脚本中批处理文件?

来自分类Dev

youtube-dl如何在单个文件夹中下载多个播放列表

来自分类Dev

如何从mp3文件目录制作播放列表?

来自分类Dev

如何从存储中创建mp3文件的播放列表

Related 相关文章

  1. 1

    Windows批处理.bat自动.m3u播放列表的创建/更新

  2. 2

    如何从子文件夹中的所有文件制作随机 m3u 播放列表?

  3. 3

    m3u播放列表删除目录

  4. 4

    Android没有看到播放列表(.m3u)文件

  5. 5

    如何从终端生成M3U播放列表(http URL格式)?

  6. 6

    如何在m3u8播放列表中重命名ts文件

  7. 7

    媒体元素音频播放器-嵌入M3U播放列表

  8. 8

    在M3U播放列表中指定文件的相对路径的正确方法是什么?

  9. 9

    正确格式化M3U播放列表

  10. 10

    将频道编号添加到M3U播放列表

  11. 11

    Python从m3u播放列表中删除重复项

  12. 12

    如何在批处理脚本中找到错误?

  13. 13

    ffmpeg:如何在 m3u8 播放列表中包含动态路径?(播放列表和片段位于不同的目录中。)

  14. 14

    批量处理多个m3u文件

  15. 15

    m3u文件中的处理路径

  16. 16

    如何使用ffmpeg加密AES-128 HLS m3u8播放列表?

  17. 17

    Video.js,如何动态更新m3u8播放列表

  18. 18

    如何从iframe嵌入代码获取m3u8播放列表

  19. 19

    chromecast会播放m3u8播放列表中的媒体片段文件(.ts)吗?

  20. 20

    如果未找到ENDLIST键,m3u8播放列表是否支持seekto功能

  21. 21

    在Windows Phone 8.1上播放HLS(m3u8播放列表)

  22. 22

    从浏览器播放M3U

  23. 23

    如何从播放列表播放每个文件的前n秒

  24. 24

    PHP-如何通过流URL的公共部分匹配来自两个m3u8播放列表的流?

  25. 25

    如何使用FFMPEG创建持续时间固定的m3u8播放列表和mpeg-ts块?

  26. 26

    如何在Shell脚本中批处理文件?

  27. 27

    youtube-dl如何在单个文件夹中下载多个播放列表

  28. 28

    如何从mp3文件目录制作播放列表?

  29. 29

    如何从存储中创建mp3文件的播放列表

热门标签

归档