执行程序等快捷方式

Emp*_*LII 14 powershell

例如:你有一个快捷方式sSomeProgram当前目录.

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.lnkSomeProgram,它运行程序就好了.

如何将PowerShell配置为像程序一样执行快捷方式?

Mar*_*ill 15

您还可以使用"invoke-item"cmdlet调用快捷方式.因此,例如,如果您要启动"Internet explorer.lnk",则可以键入以下命令:

invoke-item 'Internet Explorer.lnk'
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用别名

ii 'internet explorer.lnk'
Run Code Online (Sandbox Code Playgroud)

另一个很酷的事情是,您可以执行"invoke-item t.txt",它会自动打开*.txt文件的默认处理程序,例如记事本.

注意如果要在当前目录中执行应用程序app.exe,则必须实际指定要执行的路径(相对或绝对路径).".\ app.exe"是您执行应用程序时需要输入的内容.


bru*_*atk 9

在我的Vista系统上输入S将不会启动lnk文件,除非我在列表中设置了.lnk的环境变量PATHEXT.当我做.S将在cmd.exe中工作,我必须这样做.\ S在powershell中.


Emp*_*LII 5

添加;.LNK到我的PATHEXT环境变量的末尾后,即使没有前面的./表示法,我现在也可以执行快捷方式.(谢谢bruceatk!)

我也受到了Steven建议创建一个小脚本的启发,该脚本自动将我的所有快捷方式别名化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 }
Run Code Online (Sandbox Code Playgroud)