运行cmd.exe内置函数的PowerShell别名语法?
由于我最近才从运行cmd.exe内置函数的PowerShell别名语法?,powershell,alias,Powershell,Alias,由于我最近才从cmd.exe切换到PowerShell,我经常发现用熟悉的方式调用cmd来做一些小事情很方便。例如,要制作一个“裸”文件,列出这一点非常有用: PS> cmd /c dir /b dir1 dir2 file1.txt 我想为它创建一个别名,但我想不出正确的语法。到目前为止,我已经尝试: PS> Set-Alias dirb cmd /c dir /b # error (alias not created) PS> Set-Alias dirb
cmd.exe
切换到PowerShell,我经常发现用熟悉的方式调用cmd
来做一些小事情很方便。例如,要制作一个“裸”文件,列出这一点非常有用:
PS> cmd /c dir /b
dir1
dir2
file1.txt
我想为它创建一个别名,但我想不出正确的语法。到目前为止,我已经尝试:
PS> Set-Alias dirb cmd /c dir /b # error (alias not created)
PS> Set-Alias dirb "cmd /c dir /b" # fail (alias doesn't work)
PS> Set-Alias dirb "cmd `"/c dir /b`"" # fail (alias doesn't work)
有什么建议吗?我正在寻找调用内置
cmd.exe
命令(如dir
)的通用解决方案。我还想知道如何使用PowerShell cmdlet以正确的方式生成裸输出,但这是目前的次要问题。这个问题是关于从别名调用cmd.exe
的正确语法。别名不是为此类任务设计的。别名只是命令的另一个名称。改为使用该函数
function dirb { cmd /c dir /b }
不幸的是,powershell中的别名不接受参数-您需要为此定义一个函数。欲了解更多信息
get-help aliases
我相信你想要的是一个函数,而不是别名。例如:
function dirb {
cmd /c dir $args[0] /b
}
在PS提示符下,运行notepad$profile,将其粘贴到您的配置文件中,然后当您打开PS控制台时,它将自动加载,您可以执行以下操作:
目录c:\somedir
有关函数的更多信息,请参阅获取有关函数的帮助。您究竟为什么要使用powershell打开命令提示符?这似乎违背了目的
我更喜欢列出文件的别名是
ls
,我认为Powershell中的别名也是dir | foreach{$\uuu.name}
dir-name
也是纯Powershell。@Roman,谢谢你的纯高级答案!您可能希望的一个原因是:[PS]C:\>measure命令{ls C:\windows-recurse-name}选择totalseconds | ft-auto-totalseconds-------46.8366258[PS]C:\>measure命令{cmd/C dir C:\windows/b/s}选择totalseconds | ft-auto totalseconds-------5.3308489原因很多。问题中的cmd
可能只是任何本机应用程序的一个示例。效果很好,我还使用了@args
而不是$args[0]
,因此我的函数可以接受多个参数。谢谢,我知道PS别名不带参数,但我希望别名更像宏:纯文本替换,其中替换的文本可以包含空格。我想这就是为什么它们被称为“别名”,而不是“宏”。