Команда реестра для пункта контекстного меню для копирования имени папки

482
Hashim

Мне часто нужно быстро скопировать имя папки в Windows 7, и поэтому я пытаюсь создать эквивалент Copy as pathэлемента, который появляется в расширенных контекстных меню (т. Е. При выполнении Shift+ Right Click), который будет копировать только имя выбранной папки в буфер обмена.

Я создал ключ реестра в:

HKEY_CLASSES_ROOT\Directory\shell\Copy folder name\command 

... где все мои похожие добавления контекстного меню для папок, и это можно увидеть здесь:

enter image description here

Однако до сих пор я не смог получить код, который должен выполняться ключом, работающим так, как должен. Я наткнулся на это решение, чтобы захватить текущую папку каталога, и это, чтобы передать имя каталога в буфер обмена и собрать их вместе, чтобы получить следующее:

for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip 

Этот код работает точно так, как ожидается в командной строке.

Перед cmd /cэтим, который необходим для запуска экземпляра CMD из реестра, выдается следующее:

cmd /c for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip 

enter image description here

Однако поместить его в данные значения Defaultстрокового значения в \Copy folder name\commandключе, а затем щелкнуть правой кнопкой мыши папку и нажать Копировать имя папки не работает.

Заключение в кавычки также ничего не делает:

cmd /c "for %* in (.) do set FolderName=%~nx* && echo %FolderName%| clip" 

Что мне здесь не хватает?

2
@PimpJuiceIT К сожалению, выход из канала ничего не делает, как и избавление от последней или первой цитаты. Hashim 6 лет назад 1
Как насчет `cmd / V: ON / c" для% * in (.), Установите FolderName =% ~ nx * && echo! FolderName! | Clip "` Pimp Juice IT 6 лет назад 0
Если он работает из BAT-файла, вы можете вызвать это из контекстной записи, например: `" C: \\ folderToClip.bat \ "% 1 \" ` HackSlash 6 лет назад 0
@PimpJuiceIT Да, я уже пытался включить и отключить как отложенное расширение переменных, так и расширения команд, но в любом случае такой удачи не было. Я также использовал попытку использовать `/ k` вместо` / c` в надежде, что окно команд останется открытым для целей отладки, и то же самое для `pause` - не такая удача. Hashim 6 лет назад 0
@HackSlash Это последнее средство, но я бы предпочел выполнить такую ​​короткую команду без каких-либо внешних зависимостей. Hashim 6 лет назад 0
Хорошо, я предполагаю, что вы пытались `` FolderName =% ~ nx * "` тоже процитировать переменную таким образом ... то есть `cmd / V: ON / c" для% * in (.) Установить "FolderName =% ~ nx" * "&& echo! FolderName! | clip" `? Я заметил, что этот способ также удаляет замыкающий пробел. Pimp Juice IT 6 лет назад 0

0 ответов на вопрос