2015-06-16 107 views
0

我想写一个批处理文件,当我运行它将本地克隆存储库。创建一个bat文件,将运行git,然后运行脚本

要打开混帐,我有以下命令:

C:\Windows\System32\cmd.exe /c "%LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe" --login -i 

但是无论我把什么命令在此之后它永远不会运行。我在某处读过,这是因为当你调用一个新的shell时,它永远不会返回到旧的,不知道这是多么真实,但是有没有办法让我在git提示符窗口打开后自动运行git命令?

编辑:

所以,如果我运行这个批处理文件,它不会回应我的文字,怎么来的?为什么我打开git后忽略了所有的命令。

"%LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe" --login -i 

ECHO THIS IS A TEST 

更新:

当我运行上面的脚本,它会打开一个git的外壳,那么如果我键入exit echo命令将运行。直到我关闭了我的git shell,我的批处理脚本的其余部分才运行。如何告诉我的批处理脚本在git shell中执行命令?

+0

这是真的,但不适用于此。此外,它应该运行命令很好,虽然你不需要新的shell,所以你可以执行''%LOCALAPPDATA%\ Atlassian \ SourceTree \ git_local \ bin \ sh.exe“行--login -i '。你确定它没有执行任何操作吗?这似乎很奇怪。你可以从CMD开始脚本,或者在脚本的末尾添加'pause'这行,以便读取它的输出结果吗? – GolezTrol

+0

@GolezTrol我刚刚编辑了问题,并向您展示了我的脚本。当我运行时会发生什么,这是一个cmd窗口打开,启动git,它等待我的输入,“这是一个测试”没有显示在任何地方 – Bojan

+0

啊,是的。你启动git shell,这是一个命令行工具。控制不会返回到批处理文件,直到git外壳被终止。你期望它做什么? – GolezTrol

回答

0

如果启动交互式shell(-i选项),它将不会返回,直到您退出shell。要使命令作为shell启动的一部分运行,请将它们添加到/etc/profile脚本中。正如你正在处理的Git for Windows shell在这里将在Git安装文件夹中。您还可以创建一个仅用于您的用户帐户的$HOME/.profile文件。有关启动交互式会话时bash读取的文件的更多详细信息,请参阅bash手册。

相关问题