如何创建可与参数一起使用的cmd/PowerShell别名
我希望能够执行以下命令,而不必键入那么多如何创建可与参数一起使用的cmd/PowerShell别名,powershell,cmd,Powershell,Cmd,我希望能够执行以下命令,而不必键入那么多 php E:\zftool\zftool.phar create project E:\test 所以我创建了一个zf.cmd文件,其中包含 php E:\zftool\zftool.phar %1 %2 %3 但是当我进去的时候 zf create project E:\test 它只执行别名 php E:\zftool\zftool.phar 有没有办法解决这个问题? 提前谢谢 ================================
php E:\zftool\zftool.phar create project E:\test
所以我创建了一个zf.cmd文件,其中包含
php E:\zftool\zftool.phar %1 %2 %3
但是当我进去的时候
zf create project E:\test
它只执行别名
php E:\zftool\zftool.phar
有没有办法解决这个问题?
提前谢谢
================================================================================
[编辑]:
提出的解决方案解决了我的问题,但如果在运行时创建函数,则在关闭PowerShell窗口后将丢失其定义
要使其在每次会话中保持不变,您必须将该函数添加到您的配置文件中:
notepad$profile
命令。如果它打开一个空的未命名文件,则
应该关闭它并使用newitem-path创建一个新的$profile
$profile-键入文件
命令Set ExecutionPolicy Unrestricted
或Set ExecutionPolicy Unrestricted-Force
在您的情况下,我不会使用.cmd
文件。我将创建一个带有3个参数的PowerShell函数zf
。zf
函数将使用Invoke expression
CmdLet或&
zf ($p1, $p2, $p3)
{
[string]$pathToPHPExe = "C:\PHP\PHP.exe"
[string]$pathToFILE = "E:\zftool\zftool.phar"
[Array]$arguments = $pathToFILE, $p1, $p2, $p3
& $pathToPHPExe $arguments
}
如果这是批处理文件的全部内容,它应该可以正常工作。命令行上的输出是什么?启用echo时,它应该显示它试图运行的内容 不过,关于它为什么不起作用,我的第一个想法是,当它调用php时,您的路径中的php.cmd文件早于php.exe,并且php.cmd只传递第一个参数(即,它只有一行,如
php.exe%1
)
在批处理文件中,尝试显式运行
php.exe
,看看这是否有帮助。这里缺少一点:
将代码块定义为函数的“function”关键字
function zf ($p1, $p2, $p3) {
#your code here
}
谢谢效果很好。不知道我们可以在PowerShell中编写这样的代码。稍后我还将编辑我的帖子,解释如何使用$profile(我刚刚学到的东西)在其他会话中保持该函数。嗯……不,我的路径中没有任何php.cmd。但谢谢你:)