我試圖創建一個批處理文件,該文件爲每個文件生成一個自定義AVIsynth腳本。現在批處理文件被設置爲從視頻文件所在的文件夾中執行。我需要做的是獲得文件的創建時間以生成時間碼刻錄。我沒有問題獲取我需要的信息。但是,如果該文件是在下午創建的,我需要它在24小時內。例如,下午2點需要顯示爲14.For循環中的if/else語句中的批處理文件設置變量
我有一個工作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
進行調試有點凌亂。但希望問題清楚。
你試過用'if/i'!era!「嗎? ==「PM」' – npocmaka
謝謝,但這並不能解決我遇到的問題。問題是,如果'newth'存在於前一個循環中,它將不會切換回else部分中的'!th!'。因此,保持以前迭代的價值。 – user2433986
什麼是您的操作系統?有更多的方法來獲得時間... – npocmaka