我无法让这个工作
call "%MSDeployPath%msdeploy" -verb:sync -source:runCommand='backup.bat param1' -dest:auto,computername=10.xx.xx.xx,username=xxx,password=yyy
它给了我:
警告:'backup.bat'未被识别为内部或外部 命令,可操作程序或批处理文件。
警告:进程'C:\ Windows \ system32 \ cmd.exe'(命令行'') 退出代码'0x1'。总变化:1(0添加,0删除,1 更新,0参数更改,0字节复制)
如果我删除param1并在.bat中对其进行硬编码,它就可以正常工作,所以如果你想知道的话,bat文件没有问题。
我尝试指定.bat的完整路径,但它仍然不起作用:
call "%MSDeployPath%msdeploy" -verb:sync -source:runCommand='c:\backup.bat param1' -dest:auto,computername=10.xx.xx.xx,username=xxx,password=yyy
在这种情况下,看起来它将路径解释为远程路径,它期望backup.bat在服务器上。我在服务器上移动backup.bat后确认了这一点
为什么它必须如此坚硬?
答案 0 :(得分:7)
编辑您是对的,documentation states cmd / bat文件将流式传输到目标。
在我看来,它只是一个功能的限制,它不能接受参数。在部署时使用硬编码设置创建批处理文件的修改版本应该不会太困难。
类似的东西:
REM Start of prepended script
SET SCRIPT_USERNAME=ThatGuy
REM End of prepended script
IF ("%SCRIPT_USERNAME%" == "") SET SCRIPT_USERNAME=%1
更新浏览了msdeploy的反射源(ahem)后,我可以确认它只是当前设计的方式。它根据整个路径是否代表文件来确定是否上传文件。由于添加参数会阻止它解析文件的路径,因此它不会上传任何内容。