2015-08-25 127 views
0

好的,所以我有一個Windows 10 .bat腳本來將一個文件夾中的所有類型的視頻轉換爲另一個使用多個命令的HandbrakeCLI輸出。帶有多個命令的Windows批處理腳本

除此之外,我想使用像BES這樣的CPU使用率限制器來控制HandbrakeCLI的CPU使用率。

每個文件轉換後,我想向我發送一個Pushbullet通知,說明轉換已完成。

下面的代碼可以幫助我實現這一點,然而我需要運行.bat文件兩次才能啓動,一次迭代後停止。

最初有問題使用多個命令,所以搜索和使用「&」之間的命令,沒有喜悅。

我已經有了一個Powershell腳本來完成所有這些工作,所以請不要使用Powershell,我不想使用它,因爲Powershell腳本需要提升特權,我不想再給它了。

FOR /R "D:\ToConvert" %%i IN (*.*) DO "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize & "C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -t 1 -c 1 -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize & powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted"" & taskkill /im BES.exe 

OR

call "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize 
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize 
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted"" 
) 
taskkill /im BES.exe 
exit /b 

// TODO

刪除已轉換的文件

更新: 得到它使用代碼工作然而下面現在要刪除的文件轉換從每個循環的「ToConvert」文件夾中刪除

start "" "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize 
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize 
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted"" 
) 
taskkill /im BES.exe 
+0

第二個選擇對我來說很好。我只會把'FOR-DO'循環的右括號放在一個單獨的行上。 – Melebius

回答

0

下面的代碼工作;)

start "" "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize 
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize 
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted"" 
) 
taskkill /im BES.exe 
del /f /q "D:\ToConvert\*.*" 
1

要從ToConvert中刪除原始文件,只需在循環結尾添加del "%%i"即可。 的確,%%i保存了文件的絕對路徑。

+0

謝謝!試了一下,但決定在完成轉換後做一個完整的刪除操作! –