Выполнять ярлыки, как программы - PullRequest
14 голосов
/ 22 августа 2008

Пример: у вас есть ярлык от 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 ]

15 голосов
/ 15 сентября 2008

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

invoke-item 'Internet Explorer.lnk'

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

ii 'internet explorer.lnk'

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

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

9 голосов
/ 22 августа 2008

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

5 голосов
/ 23 августа 2008

После добавления ;.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 }
2 голосов
/ 23 августа 2008

С одной стороны, это не "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
2 голосов
/ 22 августа 2008

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

Пример -

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

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

0 голосов
/ 22 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...