我正在尝试创建一个批处理文件,为每个文件生成一个自定义 AVIsynth 脚本。现在,批处理文件设置为从视频文件所在的文件夹中执行。我需要做的是获取文件的创建时间以生成时间码刻录。获取所需的信息没有问题。但是,如果文件是在下午创建的,我需要它在 24 小时内。例如,下午 2 点需要显示为 14。
我有一个有效的 if 语句,它创建一个newth
变量,如果需要,它会增加 12。但是,如果它不需要它,变量仍然存在。在循环的每次后续迭代中,变量都不会改变。
我的例子。我有两个文件,第一个是在下午 2 点创建的,另一个是在下午 12 点创建的。首先读取 2pm 文件,newth
变量变为 14。到目前为止一切顺利。在下一个文件中,newth
变量应该变成 12,但仍然是 14。我该如何解决这个问题?
@Echo Off & CLS
SetLocal EnableDelayedExpansion
For /F %%a In ('dir *.mpg /b') Do (
ECHO Processing "%%a"
echo %%~ta
set time=%%~ta
set th=!time:~11,2!
set tm=!time:~14,2!
set era=!time:~17,2!
echo !era!
if "!era!"=="PM" (
if !th! LSS 12 ( set /a newth=!th!+12 )
) else ( set /a newth=!th!)
echo !newth!
echo //AviSynth Test Script >scripts/%%a.avs
echo DirectshowSource^("%%~fa"^)>>scripts/%%a.avs
echo LanczosResize^(720,400^) >>scripts/%%a.avs
echo ShowSMPTE^(^) >>scripts/%%a.avs
ECHO Back to Console
Pause
)
这有点乱,因为我一直在使用echo
调试。但希望问题很清楚。