![Как узнать, по какому файлу был сделан щелчок правой кнопкой мыши?](https://rvso.com/image/1400003/%D0%9A%D0%B0%D0%BA%20%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%2C%20%D0%BF%D0%BE%20%D0%BA%D0%B0%D0%BA%D0%BE%D0%BC%D1%83%20%D1%84%D0%B0%D0%B9%D0%BB%D1%83%20%D0%B1%D1%8B%D0%BB%20%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D0%BD%20%D1%89%D0%B5%D0%BB%D1%87%D0%BE%D0%BA%20%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B9%20%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%BE%D0%B9%20%D0%BC%D1%8B%D1%88%D0%B8%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.