Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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
运行mercurial命令时,windows批处理文件将退出_Windows_Git_Mercurial_Batch File_Cmd - Fatal编程技术网

运行mercurial命令时,windows批处理文件将退出

运行mercurial命令时,windows批处理文件将退出,windows,git,mercurial,batch-file,cmd,Windows,Git,Mercurial,Batch File,Cmd,对于我在Windows XP上的mercurial存储库的日常备份,我使用了一个简单的批处理文件hg_backup.bat,它只做了一些目录更改和mercurial调用,最后使用了pause命令,如下所示: @Z: @cd \hg_backup\drawings hg pull -v @cd \hg_backup\src\scripts hg pull -v @cd \hg_backup\eagle4\lbr hg pull -v @pause 这在mercurial高达1.7(与Ortois

对于我在Windows XP上的mercurial存储库的日常备份,我使用了一个简单的批处理文件
hg_backup.bat
,它只做了一些目录更改和mercurial调用,最后使用了
pause
命令,如下所示:

@Z:
@cd \hg_backup\drawings
hg pull -v
@cd \hg_backup\src\scripts
hg pull -v
@cd \hg_backup\eagle4\lbr
hg pull -v
@pause
这在mercurial高达1.7(与OrtoiseHG一起安装)的情况下运行良好。但是,从mercurial 1.8开始,它启动了第一个mercurial命令,然后突然退出,没有到达以下命令,甚至没有到达脚本的末尾。命令窗口消失了

我以前也遇到过同样的问题,当时我用git做了同样的尝试,但没有进一步研究,因为我只对一个存储库使用git。在我看来,有一些hg命令行调用的返回代码会导致脚本结束,而不是执行另一个命令,但我还不能验证这一点


有人知道为什么会发生这种情况,或者甚至知道如何修复它吗?

如果您的
hg
hg.bat
hg.cmd
,请使用
调用hg
并查看它是否开始工作


command.com
shell执行批处理文件以替换旧脚本(以节省内存),并且需要使用
call
启动批处理脚本并稍后继续执行。此行为保留在Windows
cmd.exe中以保持兼容性。

我也有同样的问题,但@grawity提供的解决方案对我不起作用(我也不知道为什么)

我的解决方案是用
cmd/C
替换
call
,如下所示:

cmd /C hg sum
cmd /C hg stat

启动命令终端并在其中运行批处理文件,您应该会收到一些错误消息。不,这样做时根本没有错误消息。您是对的,调用的hg实际上是
hg.cmd
,在批处理文件中每次调用hg之前使用
call
可以解决问题。谢谢。:-)我想知道为什么决定将.cmd文件作为已安装工具的一部分公开,它不是在旧版本中完成的,因此升级破坏了我的整个生成服务器。@Lasse:在某些情况下,为了避免将真实目录放入
%PATH%
(因为它也影响DLL搜索,并且许多跨平台软件使用大量库;一些示例是GTK+使用程序)。在其他情况下,准备运行时环境;可能是试图自动找到正确的
python.exe
?可能是因为他只引用了bat/cmd文件。IIRC调用对其他任何东西都不起作用。cmd-C起作用。