我正在使用Windows PowerShell,并且使用doskey宏对其进行了配置。
我有一个名为Macros.doskey
的文件。
105=code E:\static5\105
135=code E:\static5\135
static5=code E:\static5
如何获取与别名对应的命令?
例如,当我在PowerShell中键入105
时,它将执行命令code E:\static5\105
现在,我想知道如何从别名中获取命令。
答案 0 :(得分:1)
我从来没有将doskey与PowerShell一起使用,所以我不确定它们的外观。我最好的猜测是,PowerShell将它们视为“应用程序”类型的命令,这通常意味着外部可执行文件。
要开始,请检查PowerShell看到的内容:
Get-Command 105 | Format-List *
# or
gcm 105 | fl *
从那里,您可能只会看到诸如doskey.exe
之类的exe文件,或者可能还会看到其他信息。
如果它只是作为可执行文件列出,那么我不确定您是否可以从doskey中获取信息。
PowerShell具有自己的别名版本,可以让您进行全面发现,但是PowerShell别名不能采用参数,它们只是将一个命令别名为另一个命令。
您可以通过在PowerShell中编写函数来模拟doskey功能:
function static5 {
code.exe 'E:\static5'
}
答案 1 :(得分:1)
这将很好地完成这项工作。 [ grin ]注意,它只是给出与宏匹配的文本。我没有用多行宏进行测试,也不知道那是否有可能。
如果您希望结果只是宏而不是整行,则可以添加| ForEach-Object {$_.Split('=')[1]}
以得到=
之后的部分。
@"
404=echo '404'
666=echo '666'
dwd=echo 'Doo Wa Diddy'
"@ | Set-Content "$env:TEMP\Doskey-Macros.txt" -Force
doskey /macrofile=c:\temp\doskey-macros.txt
function DKA ($Macro)
{
doskey /macros |
Where-Object {
$_ -match $Macro
}
}
测试和输出...
dka -Macro dwd
dwd=echo 'Doo Wa Diddy'
dka -Macro adg
# nothing at all since there was no match
dka 404
404=echo '404'