【问题标题】:Creating 3 Column CSV have FileName Duration Size in CMD创建 3 列 CSV 在 CMD 中具有文件名持续时间大小
【发布时间】:2018-06-29 20:33:26
【问题描述】:

我正在使用内置 cmd 命令和mediainfo 实用程序来获取存储在 TXT 文件中的媒体文件名的三个参数,但由于我无法使其工作,我们将不胜感激

从这里我废弃了 mediainfo 的代码:https://stackoverflow.com/a/19091772/1162750

我的代码是

@echo off
cls
if exist mediafiles.txt del mediafiles.txt
dir /s/b . > mediafiles.txt
for /F "tokens=*" %%i in  (mediafiles.txt) do  (
    set /a dur=mediainfo --Inform="Video;%Duration%" "%%i"
    set /a mins=(%dur%/1000)/60
    set size=%%~zi
    set /a MB=(%size%/1024)/1024
    echo %%i,%mins%,%MB% >> mediafiles.csv
)
@echo on

FileDuration 正在从毫秒(默认 mediainfo 输出)和 FileSize(以 MB 为单位)转换为分钟

【问题讨论】:

  • 您需要调用延迟扩展 [数百篇关于此的 SO 文章 - 使用搜索功能] 以显示或使用在括号中的指令系列中更改的任何变量的运行时值(又名“代码块”)。
  • 请拨打tour,阅读How to Askminimal reproducible example。 “我不能让它工作”不是一个好的问题陈述,也绝对不是一个问题。究竟是什么不工作?脚本做了什么,你期望它做什么?
  • 这一行set /a dur=mediainfo --Inform="Video;%Duration%" "%%i" 抛出错误Missing Operator

标签: batch-file cmd mediainfo


【解决方案1】:

set /a dur=mediainfo --Inform="Video;%Duration%" "%%i" 不起作用。要获取命令的输出,请使用 for /f 循环:

for "delims=" %%a in ('mediainfo --Inform="Video;%Duration%" "%%i"') do set "dur=%%A"

(假设你有一个变量%Duration%;如果你需要%Duration%字面量,加倍百分号:

for "delims=" %%a in ('mediainfo --Inform="Video;%%Duration%%" "%%i"') do set "dur=%%A"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2020-10-26
    • 2014-12-17
    相关资源
    最近更新 更多