如何使用.bat文件运行dockerterminal命令

我想调用docker撰写使用bat文件。我试图调用使用以下,但它不执行命令。 这是我的.bat文件

echo on cd C:\Program Files\Docker Toolbox\ start start.sh cd desktop cd test docker-compose up 

有没有其他的方式来执行使用蝙蝠file.or任何其他文件的docker命令。

batch file是一个脚本文件。 脚本需要一个解释器。 对于batch file,解释器是cmd.exe – Windows命令解释器。

一个* .sh文件也是一个需要解释器的脚本。 解释器是在Unix / Linux系统shbashksh ,…也是可执行文件,但没有文件扩展名.exe因为在Unix / Linux可执行文件通常没有文件扩展名。

在Windows上,Unix / Linux shell脚本没有默认安装的解释器。 如果start start.sh起作用,而不是因为在Windowsregistry中已经在Windowsregistry中安装了一个shell解释器来作为打开* .sh文件的应用程序,这意味着通过启动的应用程序来解释shell脚本文件中的命令。

但是由cmd.exe解释并在Windows命令环境中执行的批处理脚本中的命令无法在shell解释器的shell环境中执行。

start start.sh启动一个与Windows命令进程并行运行的新进程,用于执行batch file。 batch file处理立即在此行之后继续执行命令进程中的下一个命令,而shell解释器进程将并行解释start.sh的命令。

因此,您需要的是一个batch file,它创build一个shell脚本来调用start.sh并通过shell解释器在shell环境中执行其他shell命令。

下面的批处理代码可能工作。 它没有被我testing,因为我没有Docker工具箱,也没有安装在我的Windows机器上的任何shell解释器。

 @echo off set "ShellScriptFile=%TEMP%\%~n0.sh" ( echo start.sh echo cd desktop/test echo docker-compose up ) >"%ShellScriptFile%" start "Docker Compose" /D"%ProgramFiles%\Docker Toolbox" /wait "%ShellScriptFile%" del "%ShellScriptFile%" set "ShellScriptFile=" 

为了理解使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • call /? …解释%~n0 (没有文件扩展名和path的batch file的名称)
  • del /?
  • echo /?
  • set /?
  • start /?

另请阅读Microsoft有关使用命令redirect操作符的文章,了解redirect操作符>这里用于创build用3行执行的shell脚本的解释:

 start.sh cd desktop/test docker-compose up 

这三行是由shell脚本解释器在shell环境中执行的。