Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建可与参数一起使用的cmd/PowerShell别名_Powershell_Cmd - Fatal编程技术网

如何创建可与参数一起使用的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窗口后将丢失其定义

要使其在每次会话中保持不变,您必须将该函数添加到您的配置文件中:

  • 打开Windows 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。但谢谢你:)