Создать ярлык, используя путь к приложению

787
user2319146

Как я могу создать ярлык (возможно, используя NirCmd) для Acrobat.exeиспользования пути HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exeи параметров /A "page=10" "file.pdf"?

1
Используйте `reg query`, чтобы получить путь, затем используйте` ярлык nircmd` DavidPostill 7 лет назад 0
Могу ли я объединить два, чтобы создать ярлык, который ищет путь в реестре, а не жестко его кодировать? user2319146 7 лет назад 0
Да. Разобрать результат `reg query` и передать его` nircmd` ... DavidPostill 7 лет назад 0
Я не думаю, что вы могли бы опубликовать решение, пожалуйста? (Это вне меня.) user2319146 7 лет назад 0
Готово. Ответ добавлен. Пожалуйста, дайте мне знать, что это работает (у меня не установлен acrobat для тестирования). DavidPostill 7 лет назад 0

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

1
DavidPostill

Как я могу создать ярлык (возможно, с помощью NirCmd) для Acrobat.exe?

Используйте следующий пакетный файл:

@echo off setlocal enabledelayedexpansion rem query the registry to get the full path to acrobat for /f "usebackq tokens=3*" %%a in (`reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ /s /f \Acrobat.exe ^| findstr Default`) do ( set _acrobat=%%a %%b rem create the shortcut nircmd shortcut "!_acrobat!" "shortcut_folder" "shortcut_name" /A "page=10" "file.pdf" ) endlocal 

Заметки:

  • Замените shortcut_folderна имя папки, в которой вы хотите создать ярлык
  • Замените shortcut_nameна имя, которое вы хотите дать ярлыку

Дальнейшее чтение

Спасибо, но это похоже на создание ярлыка с жестко закодированным путем; можно ли вместо этого всегда искать путь в реестре? user2319146 7 лет назад 0
@ user2319146 Нет, это невозможно. Ярлыки не работают таким образом. Если программа перемещена в другое место, просто удалите ярлык и снова запустите командный файл. DavidPostill 7 лет назад 0
Возможно, мне нужен командный файл, который ведет себя как ярлык? user2319146 7 лет назад 0
Ну, вы можете использовать командный файл в ответе. Замените `nircmd ярлык"! _Acrobat! " "shortcut_folder" "shortcut_name" / A "page = 10" "file.pdf" `с` "! _acrobat!" / A "page = 10" "file.pdf" ` DavidPostill 7 лет назад 0
Кроме этого, я не совсем понимаю, какова ваша первоначальная цель - каждый раз читать реестр ... DavidPostill 7 лет назад 0
Вам нужна дополнительная помощь? Если это ответило на ваш вопрос, не забудьте [принять ответ] (http://superuser.com/help/accepted-answer). DavidPostill 7 лет назад 0
Я попробовал ваше предложение (и добавил «Пути к приложениям» в путь к реестру), но, кажется, ничего не происходит при запуске командного файла (даже с повышенными правами). user2319146 7 лет назад 0
Как я уже сказал, я не понимаю, что вы пытаетесь сделать. Почему вы добавляете что-то в путь реестра? DavidPostill 7 лет назад 0
Я имел в виду, что я исправил путь реестра; в нем отсутствовали «Пути к приложениям». Я пытаюсь создать ярлык, который будет открывать файл на нескольких компьютерах независимо от того, где установлен Acrobat. user2319146 7 лет назад 0
Это именно то, что делает мой командный файл ... за исключением того, что ему не нужны "Пути к приложениям". Если вы действительно хотите добавить его, вам нужны кавычки "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths" из-за пробела ... DavidPostill 7 лет назад 0
ХОРОШО; Я думал, что, возможно, пропал, потому что он все еще ничего не делает. user2319146 7 лет назад 0
Обратите внимание, что в командном файле произошла ошибка. Между `%% a` и` %% b` должен быть пробел. DavidPostill 7 лет назад 0
Отлично, спасибо! Есть ли способ закрыть окно cmd после открытия файла (а не после закрытия файла)? user2319146 7 лет назад 0
Проигнорируйте это: "выход", конечно. user2319146 7 лет назад 0
0
securityghost

Вы можете просто щелкнуть правой кнопкой мыши на рабочем столе и выбрать New, а затем ярлык . Это создаст стандартный ярлык.

Как вы уже догадались, я собираюсь сделать что-то более сложное. user2319146 7 лет назад 0
0
Ben N

Никакое стороннее программное обеспечение не требуется; Вы можете использовать PowerShell:

# Get the target path from the Registry $path = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe').'(default)' # Create the shell and shortcut objects with COM $wshshell = New-Object -ComObject WScript.Shell $shortcut = $wshshell.CreateShortcut([Environment]::GetFolderPath('Desktop') + '\Acrobat.lnk') # Configure the shortcut $shortcut.TargetPath = $path $shortcut.Arguments = '/A "page=10" "file.pdf"' # Write the shortcut to disk $shortcut.Save() 

Файл ярлыка появится на рабочем столе. Чтобы изменить место сохранения ярлыка, измените строку с CreateShortcutвызовом.

Укороченная однострочная версия:

$w=New-Object -com WScript.Shell;$s=$w.CreateShortcut([Environment]::GetFolderPath('Desktop')+'\Acrobat.lnk');$s.TargetPath=(gp 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe').'(default)';$s.Arguments='/A "page=10" "file.pdf"';$s.Save() 

Чтобы вызвать из командной строки, вы просто запускаете powershellи экранируете двойные кавычки соответственно:

powershell -command $w=New-Object -com WScript.Shell;$s=$w.CreateShortcut([Environment]::GetFolderPath('Desktop')+'\Acrobat.lnk');$s.TargetPath=(gp 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe').'(default)';$s.Arguments='/A """page=10""" """file.pdf"""';$s.Save() 
Спасибо (и за то, что познакомили меня с PowerShell), но я стремлюсь создать ярлык, который ищет путь в реестре, а не жестко его кодирует. user2319146 7 лет назад 0
@ user2319146 Целевой путь * * извлекается из реестра; это жесткое местоположение файла ярлыка. Я могу изменить это, чтобы вычислить что-то, если хотите. Ben N 7 лет назад 0
Да, пожалуйста: я хочу, чтобы местоположение файла ярлыка всегда искал путь в реестре. user2319146 7 лет назад 0
@ user2319146 Как рассчитать? В настоящее время он всегда идет на рабочий стол и называется `Acrobat`. Боюсь, я не понимаю, где вы хотите, чтобы ярлык появился, не могли бы вы уточнить это, пожалуйста? Ben N 7 лет назад 0
На рабочем столе все в порядке; Я понял, что могу переместить его в другое место, как и любой другой ярлык. user2319146 7 лет назад 0