При расширении контекстного меню оболочки Windows (например, для добавления приглашения «Открыть команду здесь» в каталогах) в реестре необходимо создать ключ «команда».
Значение этого «командного» ключа, очевидно, может быть любой допустимой командной строкой.
Я хочу знать, какие «специальные переменные» доступны для использования внутри этой командной строки.
Например, я использую следующую команду для открытия окна cmd из контекстного меню каталога (*):
cmd.exe /e:on /f:on /s /k pushd "%V"
Я не могу найти ссылку на то, что на %V
самом деле означает, или каков полный список таких переменных.
(*) Для этого созданы следующие ключи реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell]
@=Open Command Prompt Here"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell\command]
@="cmd.exe /e:on /f:on /s /k pushd \"%V\""
%W
: Это не всегда доступно и выдаст загадочное сообщение об ошибке, если используется в вашемcommand
значении. Например, вызов вашего элемента контекстного меню в контекстном меню диска или папки библиотеки не будет инициализировать эту переменную. Избегайте его использования вне элемента контекстного меню обработчика файлов.%~
? Я только получаю ошибку.%V
следует использовать, если вы хотите имя каталога, т.е. когда вы хотите добавить свою команду в контекстное меню, когда вы нажимаете на фон, а не на отдельный файл или имя каталога.%L
не будет работать в этом случае.Этот вопрос заинтриговал меня, поэтому я немного поэкспериментировал. У меня есть папка
C:\iso
. Что я нашел, когда сделал правую кнопку мыши:I
возвращал различный набор чисел при каждой попытке.H
всегда 0 был иS
всегда 1. былD
,L
иV
все были в целевой папке.W
был родителем целевой папки. Кто-нибудь хочет расширить это?К вашему сведению: я использовал следующие записи реестра для проверки:
(Символы были использованы для разделителей)
источник
Вот аргументы / синтаксис для cmd.exe
/k
выполняет команду, указанную в следующей строке, поэтому она выполняет команду,pushd %V
и поскольку единственный аргумент, который принимает pushd, - это путь, из которого следует, что%V
переменная, доставляемая проводником, которая содержит путь к папке, нажатой правой кнопкой мыши.источник
Действительно, трудно найти, что означает% V или список этих переменных, с помощью Google я обнаружил, что, похоже, существует и% L. Я не думаю, что вам нужно передавать больше, чем% V или% L, хотя бы на подсказку, так как я думаю, что нет другой полезной информации. Где% V может быть именем каталога,% L может быть местоположением файла. Выполнение «эха» может помочь в случае сомнений ...
источник