Выполнять ярлыки, как программы

Вопрос задан: 11 лет назад Последняя активность: 4 года назад
up 14 down

Пример: у вас есть ярлык s в SomeProgram в текущем каталоге.

В cmd.exe, вы можете ввести s и он запустит программу.

В PowerShell, набрав s дает:

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

Если вы печатаете s.lnk или же SomeProgram, он запускает программу просто отлично.

Как я могу настроить PowerShell для выполнения ярлыков, как программы?

6 ответов

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 15 down

Вы также можете вызвать ярлык с помощью командлета invoke-item. Так, например, если вы хотите запустить «internet explorer.lnk», вы можете ввести следующую команду:

invoke-item 'Internet Explorer.lnk'

Или вы также можете использовать псевдоним

ii 'internet explorer.lnk'

Еще одна интересная вещь: вы можете сделать «invoke-item t.txt», и он автоматически откроет любой обработчик по умолчанию для файлов * .txt, например блокнот.

Примечание. Если вы хотите запустить приложение app.exe, в текущем каталоге вы должны указать путь, относительный или абсолютный, для выполнения. ". \ app.exe" - это то, что вам нужно ввести для запуска приложения.

up 9 down accepted

В моей системе Vista ввод S не будет запускать файл lnk, если у меня не установлена ​​переменная окружения PATHEXT со значением .lnk в списке. Когда я делаю. S будет работать в cmd.exe, и я должен сделать. \ S в powershell.

up 5 down

После добавления ;.LNK до конца моего PATHEXT переменная окружения, теперь я могу выполнять ярлыки даже без предыдущего ./ нотации. (Спасибо, bruceatk!)

Я также был вдохновлен предложением Стивена создать небольшой сценарий, который автоматически совмещает все ярлыки в моем PATH (хотя я планирую придерживаться более простого решения;).

$env:path.Split( ';' ) | 
  Get-ChildItem -filter *.lnk | 
  select @{ Name='Path'; Expression={ $_.FullName } }, 
         @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension( $_.Name ) } } | 
  where { -not (Get-Alias $_.Name -ea 0) } | 
  foreach { Set-Alias $_.Name $_.Path }
up 2 down

С одной стороны, это не "s", а "s.lnk". Например. Вы не можете открыть текстовый файл (скажем, с помощью блокнота), набрав «t», когда имя «t.txt» :) Technet говорит

Переменная окружения PATHEXT   определяет список расширений файлов   проверено Windows NT при поиске   для исполняемого файла. Значением по умолчанию для PATHEXT является .COM; .EXE; .BAT; .CMD

Вы можете указать точечный источник, как описано здесь другими, или вы также можете использовать символ вызова "&". Это означает, что PS рассматривает вашу строку как что-то для выполнения, а не просто текст. Это может быть более важным в сценарии, хотя.

Я хотел бы добавить, что вы должны передавать любые параметры вне кавычек (этот бит меня раньше), обратите внимание, что «-r» не в строке в кавычках, а только exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null
up 2 down

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

Пример -

Set-Alias ​​np c: \ windows \ notepad.exe

Тогда у вас есть короткое, легко вводимое имя, доступное из командной строки.

up 0 down

Вы всегда можете использовать завершение табуляции, чтобы набрать «s [TAB]» и нажать ENTER, и это запустит его.

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском