У меня есть программа, которая открывается с определенным ярлыком, но ярлык, кажется, отправляет параметры в приложение. Если я иду прямо в целевой каталог и дважды щелкаю, это не работает. Однако, если я использую командную строку и передам определенный аргумент, приложение откроется правильно.
Я хочу открыть определенные типы файлов с помощью приложения, но приложение должно иметь параметры, иначе оно не будет работать. Можно ли сделать что-то подобное?
Ответы:
Я столкнулся с той же проблемой, что и @jtpereyda, и решение @bobbymcr у меня тоже не сработало. Я пытался получить все параметры командной строки, передаваемые в сценарии node.js, без необходимости использовать файл node.exe в команде.
Проблема в том, что если вы уже связали программу с расширением через
Open With
диалоговое окно, то вы создадите ассоциацию приложений, а не ассоциацию расширений файлов, между ними. И ассоциации приложений имеют приоритет.Если вы не возражаете против редактирования реестра, вы можете изменить
(Default)
ключ по следующему пути:HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command
Вам следует заменить
node.exe
приложение, которое вы настраиваете.Или вы можете просто удалить папку приложения из
HKEY_CLASSES_ROOT\Applications
папки, и вашаftype
ассоциация начнет работать.Обязательно используйте,
%*
который будет передавать оставшиеся неопределенные аргументы командной строки или вообще ничего. Если вы это сделаете,"%2" "%3" "%4" "%5"
вы получите 5 пустых строковых параметров, переданных в ваше приложение, если вы не укажете аргументы командной строки.Наконец, если вы не согласны с изменением реестра вручную, вы можете использовать бесплатный инструмент от Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html
Файловые ассоциации появятся вверху списка, без текста в первом столбце расширения. Просто найдите имя исполняемого файла в списке и выберите его, чтобы изменить
command line
поле для имениopen
действия.На windows7 изменения отразились сразу же без перезагрузки или перезапуска приложения. Однако утилита Nirsoft имеет функцию «Обновить рабочий стол» при любой модификации, поэтому я полагаю, что, возможно, Vista или более ранние версии ОС будут кэшировать данные. В этом случае утилита будет лучше, в противном случае вам может потребоваться выйти из системы и войти, чтобы увидеть изменения.
источник
"C:\Program Files\nodejs\node.exe" "%1"%*
ПРИМЕЧАНИЕ:%*
значение НЕ в кавычках, и между ним и предыдущей двойной кавычкой нет пробела.HKEY_CLASSES_ROOT\.ulaw
в regedit на тот случай, если.ulaw
это расширение файлов, для которых я делал процедуру.HKEY_CLASSES_ROOT
статьи. Это понятное недоразумение, учитывая, что большая часть собственной документации Microsoft предшествует объединенному представлению для HKCR, которое было представлено около Windows 2000.Вы можете сделать это с помощью
assoc
иftype
в командной строке. Откройте командную строку с повышенными правами и попробуйте следующее:Это свяжет
.xyz
расширениеMyProgram.exe
и передаст командную строку/arg1 /arg2 [filename.xyz]
программе для его запуска.источник
.ulaw
файл,sox
используя предопределенные аргументы из него. Обратите внимание, что в дополнение к удалению старого приложения я также удалил,HKEY_CLASSES_ROOT\.ulaw
который определял тип файла.assoc
иftype
являются устаревшими командами. Они не были обновлены для расширений ассоциаций файлов, добавленных в Windows XP, 7 и 8. Они изменяют только ассоциации файлов и ключи ProgId под системным ключом «HKLM \ Software \ Classes». Они не читают и не изменяют настройки HKCU для каждого пользователя, которые имеют приоритет, или более новые подразделы, такие как «Applications» и «SystemFileAssociations», или ключи возможностей для каждого приложения из «RegisteredApplications». Они также не читают и не изменяют выбор пользователя в разделе «HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts».Человек, который задает вопрос, сообщает, что лучший ответ на самом деле не работает.
Я понял это для XP, которая может применяться к более поздним ОС.
В командной строке cmd вам нужны две команды:
assoc
,ftype
.Эти два могут показать, что связано, и затем отредактировать ассоциацию, но есть поворот, инструкции MS кажутся неправильными / неполными. Я был предупрежден об этом, заметив недокументированный стиль ассоциации со стороны известных ветеранских приложений. Почему?
Этот пример позволяет передавать много аргументов ассоциированной программе.
Это не опечатка
"%1" "%*"
. Звезда процента не будет работать без предшествующего процента 1 .И это сразу же начинает действовать, не требуется выходить из системы и т. Д.
Сделано правильно, пройдет 3 к arg []
Не сделали этого, но похоже, что следующие внешние кавычки передают -m, если программе нужен флаг.
источник
%1 %*
без кавычек !!! проклятые окнаУ меня была похожая проблема со старой версией PSP с Windows7
Это решение (смена оболочки \ open \ командной строки в реестре) сработало, НО должен был иметь синтаксис "C: \ MyFolderName \ PSP.EXE"% 1 NO QUOTES AROUND% 1, иначе это интерпретируется как константа
источник
Не лучшее решение, но самое простое - использовать командный файл.
Создайте подобный файл bat и установите в нем программу по умолчанию для вашего расширения файла. И да, нужна пустая цитата после запуска:
{имя приложения} .bat
Пример:
BCompareEdit.bat
источник
Вот расширение, которое, кажется, делает именно то, что вы хотите. Я никогда не использовал его раньше, но, похоже, получил хорошие отзывы. оставить комментарий, если есть проблемы.
источник
Сделайте ярлык Windows и используйте следующий шаблон:
источник
xyz.jpg
?