如何使用.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系统sh
, bash
, ksh
,…也是可执行文件,但没有文件扩展名.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环境中执行的。