【问题标题】:assign date and time to output file为输出文件分配日期和时间
【发布时间】:2014-05-13 18:06:14
【问题描述】:

我正在处理ffmpeg 屏幕截图,我不想让它在启动时开始录制,所以我需要为输出视频文件指定一个每次开始录制时都不同的名称,我确实发现了这个问题接近我需要的,所以我最终在批处理文件中使用了这个命令:

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/" %%a in ('time /t') do (set mytime=%%a%%b)

cd /d E:\ffmpeg\bin

ffmpeg -f dshow -i video="screen-capture-recorder"
-c:v libx264 -r 10 -crf 37 -pix_fmt yuv420p E:\%mydate%_%mytime%.flv

现在我在 ffmpeg cmd 中遇到错误:[NULL @ 0270d2c01] 无法为“E:-04-2014_02:35”找到合适的输出格式

E:-04-2014_02:35 无效参数

我知道是因为mytime : 中的特殊字符,但我不知道如何更改它。

【问题讨论】:

  • 奇怪的是,您的原始帖子和报告并没有绑定。您的最新版本是从原始帖子中删除您在time 处理中的冒号。请解释一下。

标签: windows batch-file ffmpeg cmd


【解决方案1】:

**编辑为用_分隔日期和时间

如果您只需要唯一的文件名,请不要乱用特殊字符和本地化格式。您可以使用:

for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set DateTime=%%i
set DateTime=%DateTime:~0,8%_%DateTime:~8,6%
REM or:    set filename=%DateTime:~0,8%_%DateTime:~8,6%.flv
echo %DateTime%

编辑到“问题是文件名是这样的 20140204_161529 而我不希望它是那样的 2014_02_04_16_15_29”:在 forloop 中使用它:

set oldfilename=%DateTime:~0,8%_%DateTime:~8,6%.flv
set newfilename=%DateTime:~0,4%_%DateTime:~4,2%_%DateTime:~6,2%_%DateTime:~8,2%_%DateTi‌​me:~10,2%_%DateTime:~12,2%.flv

【讨论】:

  • 太好了,如果我不想用“_”来分隔它们呢
  • 我的意思是如果可能的话像这样 2014_02_04_16_15_29
  • 有什么问题? set filename=%DateTime:~0,4%_%DateTime:~4,2%_%DateTime:~6,2%_%DateTime:~8,2%_%DateTime:~10,2%_%DateTime:~12,2%.flv
  • 问题是文件名是这样的 20140204_161529 我不希望它是那样的 2014_02_04_16_15_29
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2014-10-27
  • 2013-06-17
  • 2014-07-25
  • 2011-07-22
  • 1970-01-01
相关资源
最近更新 更多