Windows 包含多个命令的批处理脚本
Windows batch script with multiple commands
好的,所以我有一个 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
或
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
//待办事项
删除已经转换的文件
更新:
使用下面的代码让它工作但是现在想要从每个循环 "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
要从 ToConvert 中删除原始文件,只需在循环末尾添加一个 del "%%i"
。
实际上,%%i
包含文件的绝对路径。
下面的代码有效 ;)
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\*.*"
好的,所以我有一个 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
或
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
//待办事项
删除已经转换的文件
更新: 使用下面的代码让它工作但是现在想要从每个循环 "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
要从 ToConvert 中删除原始文件,只需在循环末尾添加一个 del "%%i"
。
实际上,%%i
包含文件的绝对路径。
下面的代码有效 ;)
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\*.*"