题
例子:你有一条捷径 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 以像程序一样执行快捷方式?
解决方案
在我的 Vista 系统上,输入 S 不会启动 lnk 文件,除非我在列表中使用 .lnk 设置了环境变量 PATHEXT。当我做。S 将在 cmd.exe 中工作,而我必须在 powershell 中执行 .\S 。
其他提示
您还可以使用“invoke-item”cmdlet 调用快捷方式。例如,如果您想启动“internet explorer.lnk”,您可以键入以下命令:
invoke-item 'Internet Explorer.lnk'
或者您也可以使用别名
ii 'internet explorer.lnk'
另一个很酷的事情是,您可以执行“invoke-item t.txt”,它会自动打开 *.txt 文件的默认处理程序,例如记事本。
笔记 如果要在当前目录中执行应用程序 app.exe,则必须实际指定要执行的相对或绝对路径。“.\app.exe”是您需要键入的内容来执行应用程序。
添加后 ;.LNK
到我的结束 PATHEXT
环境变量,我现在可以执行快捷方式,即使没有前面的 ./
符号。(谢谢布鲁斯克!)
我还受到史蒂文建议的启发,创建一个小脚本,自动为我的文件中的所有快捷方式添加别名。 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 }
我不相信你可以。您最好在从配置文件脚本调用的脚本中使用常用命令的别名。
例子 -
设置别名 np c:\windows otepad.exe
然后您就可以从命令行获得简短、易于输入的名称。
其一,快捷方式不是“s”,而是“s.lnk”。例如。当名称为“t.txt”时,您无法通过键入“t”来打开文本文件(例如使用记事本):) 科技网说
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
您始终可以使用制表符完成来键入“s[TAB]”并按 ENTER 键,这将执行它。