0

HandBrakeCLI でいくつかのビデオ ファイルを変換するための次のバッチ ファイル コードがあります。

for /R .\test %%F in (*.mp4,*.avi,*.flv,*.mov,*.3gp,*.wmv,*.mkv,*.ts) do (
HandBrakeCLI -e x264 --x264-preset medium -q 35 --crop 0:0:0:0 --aencoder copy -i "%%~fF" -o "%%~dpF%%~nF_conv.mp4"
if exist "%%~dpF%%~nF_conv.mp4" (
    del "%%~fF"
    ren "%%~dpF%%~nF_conv.mp4" "%%~nxF"
    )
)

このコードをビデオに適用するには、バッチ ファイルと Handbrake.exe (およびその関連フォルダー) をコピーし、(上記のコードで) test という名前のフォルダーの横に貼り付けてから、バッチ ファイル内の名前「test」を変更する必要があります。そのフォルダーの名前に変更し、バッチファイルを実行します。

任意のフォルダーで実行する方法でバッチファイルを作成して、ビデオを含むフォルダーを要求し、移動せずにパスを書き込みます (または、単にフォルダーをコマンド ラインにドラッグ アンド ドロップして Enter キーを押します)。ファイルと「テスト」の名前を変更しますか?

4

2 に答える 2

1

ユーザー入力から読み取る変数を作成する必要があります

set /p path=Videos path :

for /R %path% %%F in (*.mp4,*.avi,*.flv,*.mov,*.3gp,*.wmv,*.mkv,*.ts) do (
HandBrakeCLI -e x264 --x264-preset medium -q 35 --crop 0:0:0:0 --aencoder copy -i "%%~fF" -o "%%~dpF%%~nF_conv.mp4"
if exist "%%~dpF%%~nF_conv.mp4" (
    del "%%~fF"
    ren "%%~dpF%%~nF_conv.mp4" "%%~nxF"
    )
)

set /pパスを書き留めるか、フォルダーのドラッグアンドドロップで問題なく動作します

于 2015-02-04T20:00:04.620 に答える
1

"%~1"ドラッグ アンド ドロップ引数を読み取るために使用します。

for /R "%~1" %%F in (etc...)

バッチ スクリプトがドラッグ アンド ドロップなしで起動される場合 ( if "%~1"=="")、フォルダー チューザーを使用して、ユーザーがフォルダーを参照できるようにすることができます。

@if (@CodeSection == @Batch) @then

:: based on fchooser2.bat
:: https://stackoverflow.com/a/15906994/1683264

@echo off
setlocal

if "%~1"=="" (
    call :chooser dir || goto usage
) else if exist "%~1" (
    set "dir=%~1"
) else goto usage

for /R "%dir%" %%F in (*.mp4,*.avi,*.flv,*.mov,*.3gp,*.wmv,*.mkv,*.ts) do (
    HandBrakeCLI -e x264 --x264-preset medium -q 35 --crop 0:0:0:0 --aencoder copy -i "%%~fF" -o "%%~dpF%%~nF_conv.mp4"
    if exist "%%~dpF%%~nF_conv.mp4" (
        del "%%~fF"
        ren "%%~dpF%%~nF_conv.mp4" "%%~nxF"
    )
)

:: end main runtime.  Pause if dragged-and-dropped or double-clicked.
if /i "%cmdcmdline:~0,6%"=="cmd /c" pause
goto :EOF

:chooser <var_to_set>
setlocal
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0"') do (
    if not "%%~I"=="" if exist "%%~I" (
        endlocal & set "%~1=%%~I"
        exit /b 0
    )
)
exit /b 1

:usage
echo Usage: %~nx0 [directory]
goto :EOF

@end
// JScript portion

var shl = new ActiveXObject("Shell.Application");
var folder = shl.BrowseForFolder(0, "Please choose a folder.", 0, 0x00);
WSH.Echo(folder ? folder.self.path : '');
于 2015-02-04T20:04:33.963 に答える