执行程序之类的快捷方式

时间:2020-03-05 18:42:03  来源:igfitidea点击:

示例:在当前目录中,我们有一个指向" SomeProgram"的快捷方式" s"。

在" 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以像程序一样执行快捷方式?

解决方案

回答

我不相信你可以。从配置文件脚本调用的脚本中,最好对别名的常用命令使用别名。

例子 -

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

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

回答

我们始终可以使用制表符补全键入" s [TAB]",然后按Enter,然后将执行它。

回答

在我的Vista系统上,除非在列表中将环境变量PATHEXT设置为.lnk,否则键入S不会启动lnk文件。当我做。 S将在cmd.exe中工作,而我必须在powershell中执行。\ S。

回答

首先,快捷方式不是" s",而是" s.lnk"。例如。当名称为" t.txt"时,我们无法通过键入" t"来打开文本文件(例如使用记事本):) Technet说

The PATHEXT environment variable
  defines the list of file extensions
  checked by Windows NT when searching
  for an executable file. The default value of PATHEXT is .COM;.EXE;.BAT;.CMD

我们可以按此处其他人的描述进行点源,也可以使用调用字符"&"。这意味着PS会将字符串视为要执行的内容,而不仅仅是文本。不过,这在脚本中可能更为重要。

我要补充一点,我们应该在引号之外传递任何参数(这是我之前的一点),请注意,"-r"不在引号字符串中,仅在exe中。

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

回答

在我的环境变量" PATHEXT"的末尾添加"; .LNK"之后,即使没有前面的" ./"符号,我现在也可以执行快捷方式。 (感谢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 }

回答

我们也可以使用" invoke-item" cmdlet调用快捷方式。因此,例如,如果我们要启动" internetexplorer.lnk",则可以键入以下命令:

invoke-item 'Internet Explorer.lnk'

或者我们也可以使用别名

ii 'internet explorer.lnk'

另一个很酷的事情是,我们可以执行"调用项t.txt",它将自动打开* .txt文件的默认处理程序,例如记事本。

注意如果要在当前目录中执行应用程序app.exe,则必须实际指定要执行的相对或者绝对路径。我们需要输入"。\ app.exe"来执行该应用程序。