包含多个命令的Windows批处理脚本

时间:2015-08-25 05:08:58

标签: windows cmd batch-processing handbrake

好的,所以我有一个Windows 10 .bat脚本来转换一个文件夹中的所有类型视频,并使用带有多个命令的HandbrakeCLI在另一个文件夹中输出。

除此之外,我想使用像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

2 个答案:

答案 0 :(得分:1)

要从ToConvert删除原始文件,您只需在循环结束时添加del "%%i"即可。 实际上,%%i拥有文件的绝对路径。

答案 1 :(得分: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\*.*"