运行mercurial命令时退出Windows批处理文件

时间:2011-03-07 08:51:48

标签: 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

这适用于多达1.7的mercurial(与TortoiseHg一起安装)。但是,由于mercurial 1.8它启动了第一个mercurial命令,然后突然退出而没有达到以下命令甚至脚本结束。命令窗口就会消失。

我之前有过同样的问题,当我用git尝试同样的事情,但没有进一步调查,因为我只使用git作为一个存储库。在我看来,有一些hg命令行调用的返回代码会导致脚本结束而不是执行另一个命令,但我还是无法验证它。

有谁知道为什么会发生这种情况,甚至可能解决这个问题?

2 个答案:

答案 0 :(得分:8)

如果您的hghg.bathg.cmd,请使用 call hg ,看看它是否开始有效。

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

答案 1 :(得分:0)

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

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

cmd /C hg sum
cmd /C hg stat
相关问题