首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Powershell调用DOSkey别名?

如何从Powershell调用DOSkey别名?
EN

Stack Overflow用户
提问于 2018-07-31 02:11:45
回答 3查看 1K关注 0票数 3

我有DOSKey别名,我设置为这样(Aliases in Windows command prompt),从注册表调用它,并且我希望能够从powershell运行它;有什么方法可以这样做吗?它真正做的就是向%PATH%环境变量添加一些内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-31 06:53:30

如果您不必使用DOSKey并且只想别名一个命令,您可以使用内置的Set-Alias命令,如下所示:

代码语言:javascript
复制
Set-Alias -Name np -Value notepad++

这将在打开当前powershell窗口时将别名np命名为notepad++。它还允许您使用np temp.txt打开文件。如果您想要持久化,您可以将其添加到您的配置文件中。您可以通过编辑您的Microsoft.PowerShell_profile.ps1 (简写为:

代码语言:javascript
复制
notepad $profile

您可以随意使用notepad++或您在路径中可能拥有的任何其他编辑器。您可以将Set-Alias行添加到文件的底部,并保存和关闭它。然后,当您打开另一个powershell实例时,它将提供示例np别名。

票数 4
EN

Stack Overflow用户

发布于 2018-07-31 16:27:28

下面是将DOSKEY宏复制到PowerShell别名的代码。对于某些已经具有PowerShell别名或在PowerShell中不以相同方式工作的命令来说,这可能有意义,也可能没有意义。

请注意,必须将该命令源到当前shell中。

代码语言:javascript
复制
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别名则不支持.

票数 4
EN

Stack Overflow用户

发布于 2021-03-14 18:23:25

@‘t的剧本对我没有用。下面是一个有效的脚本。它将生成的Set-Alias命令复制到$profile脚本中。

代码语言:javascript
复制
doskey /MACROS |
 ForEach-Object {
     if ($_ -match '(.*)=(.*)') {
         echo ('Set-Alias -Name '+$Matches[1]+' -Value '+$Matches[2])
     }
  } > $profile

备注:

  • 与原始脚本一样,这必须在从cmd会话开始的PowerShell会话中执行。
  • $profile文件对我来说并不存在。我首先必须与包含的文件夹一起创建它。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51604545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档