执行程序等快捷方式

时间:2008-08-22 14:39: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配置为像程序一样执行快捷方式?

6 个答案:

答案 0 :(得分:15)

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

invoke-item 'Internet Explorer.lnk'

或者您也可以使用别名

ii 'internet explorer.lnk'

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

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

答案 1 :(得分:9)

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

答案 2 :(得分: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 }

答案 3 :(得分:2)

我不相信你可以。您可能最好在通过配置文件脚本调用的脚本中对常用命令进行别名处理。

示例 -

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

然后,您可以从命令行获得简短,易于输入的名称。

答案 4 :(得分:2)

首先,快捷方式不是“s”,而是“s.lnk”。例如。当名称为“t.txt”时,您无法通过键入“t”来打开文本文件(例如记事本)。Technet says

  

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

答案 5 :(得分:0)

您始终可以使用制表符完成键入“s [TAB]”并按ENTER键,然后执行它。