为输出文件指定日期和时间

时间:2014-04-02 12:38:49

标签: windows batch-file ffmpeg cmd

我正在进行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 :中的特殊字符,但我不知道如何更改它。

1 个答案:

答案 0 :(得分:2)

**已编辑为使用_

分隔日期和时间

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

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”:在for循环中使用它:

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