簡體   English   中英

Windows批處理腳本-一次只能執行一個命令

[英]Windows Batch Script - FOR DO one command at a time

我制作了一個批處理腳本,以在子目錄中找到.flv和.mp4文件,並在該子文件夾中創建一個具有相同名稱的模板.srt文件。

問題是,我使用了FOR DO循環,似乎吐出命令的速度太快了,以至於不可靠。

這是代碼:

for /R %%f in (*.flv) do (
cd  %%~nf
echo.1>> "%%~nf".srt
echo.00:00:00,500 --^> 00:00:03,500>> "%%~nf".srt
echo.%%~nf>> "%%~nf".srt
echo.>> "%%~nf".srt
echo.2>> "%%~nf".srt
echo.00:00:00,000 --^> 00:00:00,000>> "%%~nf".srt
echo.%%~nf>> "%%~nf".srt
cd..
)
for /R %%f in (*.mp4) do (
cd  %%~nf
echo.1>> "%%~nf".srt
echo.00:00:00,500 --^> 00:00:03,500>> "%%~nf".srt
echo.%%~nf>> "%%~nf".srt
echo.>> "%%~nf".srt
echo.2>> "%%~nf".srt
echo.00:00:00,000 --^> 00:00:00,000>> "%%~nf".srt
echo.%%~nf>> "%%~nf".srt
cd..
)

如果一切順利..對於./FILE1/FILE1.mp4,它將使./FILE1/FILE1.srt包含:

1
00:00:00,500 --> 00:00:03,500
FILE1

2
00:00:00,000 --> 00:00:00,000
FILE1

這樣做,但僅針對前幾個文件,然后該過程似乎進行得太快,我在錯誤的srt文件中得到了雙打和錯誤的標題。

好像do(...)循環同時吐出所有命令。 我什至嘗試使用PING命令降低速度,甚至嘗試使用GOTO命令將工作分解為多個步驟,但沒有運氣。

我如何才能一次執行一個命令,同時仍然可以使用%%〜nf創建和標記.srt文件呢?

任何幫助是極大的贊賞!

“可能”是目錄名稱和cd %~nf cd ..邏輯中嵌套子目錄或空格存在某種問題。 更改為cd "%~dpf"以更改為文件所在的目錄。 或者更好的是,不要更改目錄並在每次文件訪問中使用完整路徑。

for /R %%f in (*.flv *.mp4) do (
    echo(1
    echo(00:00:00,500 --^> 00:00:03,500
    echo(%%~nf
    echo(
    echo(2
    echo(00:00:00,000 --^> 00:00:00,000
    echo(%%~nf
) > "%%~dpnf.srt"

這應該工作:

@echo off
for /F "delims==" %%f in ('dir /s /b /o:gn *.flv *.mp4') DO ( 
echo.1> "%%~dpnf.srt"
echo.00:00:00,500 --^> 00:00:03,500>> "%%~dpnf.srt"
echo.%%~nf>> "%%~dpnf.srt"
echo.>> "%%~dpnf.srt"
echo.2>> "%%~dpnf.srt"
echo.00:00:00,000 --^> 00:00:00,000>> "%%~dpnf.srt"
echo.%%~nf>> "%%~dpnf.srt"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM