我有DOSKey别名,我设置为这样(Aliases in Windows command prompt),从注册表调用它,并且我希望能够从powershell运行它;有什么方法可以这样做吗?它真正做的就是向%PATH%环境变量添加一些内容。
发布于 2018-07-31 06:53:30
如果您不必使用DOSKey并且只想别名一个命令,您可以使用内置的Set-Alias命令,如下所示:
Set-Alias -Name np -Value notepad++这将在打开当前powershell窗口时将别名np命名为notepad++。它还允许您使用np temp.txt打开文件。如果您想要持久化,您可以将其添加到您的配置文件中。您可以通过编辑您的Microsoft.PowerShell_profile.ps1 (简写为:
notepad $profile您可以随意使用notepad++或您在路径中可能拥有的任何其他编辑器。您可以将Set-Alias行添加到文件的底部,并保存和关闭它。然后,当您打开另一个powershell实例时,它将提供示例np别名。
发布于 2018-07-31 16:27:28
下面是将DOSKEY宏复制到PowerShell别名的代码。对于某些已经具有PowerShell别名或在PowerShell中不以相同方式工作的命令来说,这可能有意义,也可能没有意义。
请注意,必须将该命令源到当前shell中。
PS C:\src\t> type .\Get-DoskeyMacros.ps1
& doskey /MACROS |
ForEach-Object {
if ($_ -match '(.*)=(.*)') {
Set-Alias -Name $Matches[1] -Value $Matches[2]
}
}
PS C:\src\t> . .\Get-DoskeyMacros.ps1备注: (ht mklement0)
此代码假定已经定义了档案密钥别名,这在正常的PowerShell会话中是不可能的。但是,您可以从定义它们的cmd会话启动PowerShell会话,也可以从定义它们的PowerShell运行批处理文件。
一个潜在的转换到别名的问题是doskey宏支持参数(例如$*),而PowerShell别名则不支持.
发布于 2021-03-14 18:23:25
@‘t的剧本对我没有用。下面是一个有效的脚本。它将生成的Set-Alias命令复制到$profile脚本中。
doskey /MACROS |
ForEach-Object {
if ($_ -match '(.*)=(.*)') {
echo ('Set-Alias -Name '+$Matches[1]+' -Value '+$Matches[2])
}
} > $profile备注:
$profile文件对我来说并不存在。我首先必须与包含的文件夹一起创建它。https://stackoverflow.com/questions/51604545
复制相似问题