Поэтому я пытаюсь создать контекстное меню правой кнопкой мыши, которое будет копировать путь к файлу в Windows 7. Это мой реестр:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\Windows\System32\Tweaks\ContextCopy.exe path %1"

Опция правильно отображается в контекстном меню. ContextCopy.exe принимает абсолютный путь к файлу в виде строки и внутренне копирует его в буфер обмена в зависимости от того, что является первым аргументом. Он работает нормально, так как я проверил его из командной строки с фактическим именем файла для последнего аргумента. Но всякий раз, когда я делаю это из контекстного меню, я получаю всплывающее сообщение об ошибке «Этот файл не имеет связанной с ним программы для выполнения этого действия». И заголовок этого всплывающего окна - путь к файлу, по которому я щелкнул правой кнопкой мыши и открыл меню. Путь также не копируется в буфер обмена.

Я думаю, что% 1 должен дать абсолютный путь к файлу в виде строки, верно?

3 ответа3

2

Вы можете попробовать включить кавычки вокруг% 1, чтобы пути с пробелами рассматривались как одна строка.

Так через Regedit измените команду на:

C:\Windows\System32\Tweaks\ContextCopy.exe path "%1"

Который будет экспортировать как:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\Windows\System32\Tweaks\ContextCopy.exe path \"%1\""

Обратные слэши избегают вложенных кавычек.

Кроме того, поскольку вы используете Windows 7, вам на самом деле не нужна маленькая утилита ContextCopy.exe, так как вы можете использовать встроенную в Windows команду clip :

Из clip /?:

CLIP

Описание: Перенаправляет вывод инструментов командной строки в буфер обмена Windows. Этот текстовый вывод может быть вставлен в другие программы.

Список параметров:

/?                  Displays this help message.

Примеры:

DIR | CLIP          Places a copy of the current directory
                    listing into the Windows clipboard.

CLIP < README.TXT   Places a copy of the text from readme.txt
                    on to the Windows clipboard.

Таким образом, вы можете заменить Команду чем-то вроде cmd.exe /c echo "%1"|clip и получить тот же эффект без сторонней утилиты.

0

Я понял. Мне нужно было избежать обратной косой черты в пути .exe, а также кавычки вокруг% 1:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\\Windows\\System32\\Tweaks\\ContextCopy.exe path \"%1\""
-1

Вам нужно (по крайней мере) добавить кавычки вокруг% 1 - "%1" - в противном случае ваш путь к файлу и имя будут отображаться как отдельные параметры, где бы они ни были.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .