![どのファイルが右クリックされたかを知るにはどうすればいいですか?](https://rvso.com/image/1400003/%E3%81%A9%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%81%9F%E3%81%8B%E3%82%92%E7%9F%A5%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
スクリプトを書いて、右クリックのコンテキスト メニューに追加しようとしています。メニューに項目を追加するには、次のコードを使用しました。 Windows: 右クリック メニューにバッチ スクリプト アクションを追加する方法ただし、
HKEY_CLASSES_ROOT\Directory\shell\MyScript1
私は使ったことがある
HKEY_CLASSES_ROOT\*\shell\MyScript1
拡張子に関係なく、すべてのファイルに表示されます。
さて、実際の bat ファイルでは、どのファイルが右クリックされたかを知る方法が必要です。そうすれば、それを入力として使用できます。後で使用するために、ファイルのフル パスを変数に入れる方法はありますか?
答え1
バッチ スクリプトに渡される引数がファイルの場合、環境変数を使用して、パス、ファイル名、ファイル拡張子などを取得できます。例:
@echo off
::
::If no parameter is passed, exit.
::
if [%~1]==[] echo Missing parameter! Script will exit... && exit /b
::
::If file does not exist, exit.
::
if not exist "%~1" echo File does not exist. Are you sure "%~1" is a file? && exit /b
echo.
echo File info
echo ---------
echo Path: %~dp1
echo Name: %~n1
echo Extension: %~x1
echo.
pause
exit /b
これは、ファイルをスクリプトにドラッグするか、コマンドラインからパラメータとして渡すかに関係なく機能します。引数とその拡張構文についてさらに学ぶSS64.comで。