.batは、マルチドラッグアンドドロップファイルに従って変数を設定します


0

ドロップされたファイルに応じて.batファイルに変数を設定するにはどうすればよいですか?

Set file=C:\files\movie.mp4
Set folder=C:\files\

これを変更したいので、ファイルを.batにドラッグアンドドロップすると、ファイル変数がファイルパスにドラッグされ、フォルダーがファイルの親ディレクトリに変更されます。

それは可能ですか?

編集KeltariDavidPostillのおかげで上記の問題は解決されました

今、複数のファイルを.batにドロップしたときに問題に直面しています。最初のファイルのみを実行し、残りは変更しません。ファイルを1つずつドロップしても機能しますが。

動作させるには何を変更すればよいですか?

私のコードは

SET file=%~1
SET folder=%~dp1

ffmpeg -y -ss 120 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev001.ts"
ffmpeg -y -ss 300 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev002.ts"
ffmpeg -y -ss 600 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev003.ts"

少なくともデフォルトでは、コンソールアプリケーションがドラッグアンドドロップ機能をサポートしているとは思わない。

回答:


1

StackOverflowからのこの投稿では、その方法について説明します。

バッチファイルのドラッグアンドドロップの実装が不適切です。スペースが存在する場合、名前は引用されますが、&、; ^などの特殊文字が見つかった場合は引用されません。

ファイル名のみのスペースの場合、コードを少し変更するだけです。

@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r

%~1 常に引用符なしのバージョンに展開されるため、常に安全な方法で引用できます。

"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets" c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"


ご協力いただきありがとうございます。あなたが私が今直面している新しい問題を支援できることを願っています。投稿が編集されました。前もって感謝します。
user2132188

@ user2132188、これはあなたを助けるかもしれない。
MC ND
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.