如何使用 .bat 文件运行传递 docker 终端命令

raj*_*j19 3 batch-file docker

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

echo on
cd C:\Program Files\Docker Toolbox\
start start.sh cd desktop 
cd test
docker-compose up
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以使用 bat 文件或任何其他文件执行 docker 命令。

Mof*_*ofi 6

批处理文件是一个脚本文件。脚本需要解释器。对于批处理文件,解释器是cmd.exeWindows 命令解释器 \xe2\x80\x93。

\n\n

*.sh 文件也是需要解释器的脚本。解释器位于 Unix/Linux 系统上sh,...它们也是可执行文件,但没有文件扩展名bash,因为在 Unix/Linux 上可执行文件通常没有文件扩展名。ksh.exe

\n\n

在 Windows 上,默认情况下没有安装 Unix/Linux shell 脚本的解释器。如果start start.sh确实有效,那么是因为在 Windows 上安装了 shell 解释器,该解释器已在 Windows 注册表中注册为用于打开 *.sh 文件的应用程序,这意味着通过启动的应用程序解释 shell 脚本文件中的命令。

\n\n

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

\n\n

start start.sh启动一个与为\xc2\xa0执行批处理文件而创建的Windows命令进程并行运行的新进程。批处理文件处理在此行之后立即继续,执行命令进程中的下一个命令,而 shell 解释器进程并行解释start.sh.

\n\n

因此,这里需要一个批处理文件,该文件创建一个 shell 脚本,以便start.sh通过 shell 解释器在 shell 环境中调用并执行其他 shell 命令。

\n\n

下面的批处理代码可能有效。它没有经过我的测试,因为我的 Windows 机器上没有安装Docker Toolbox或任何 shell 解释器。

\n\n
@echo off\nset "ShellScriptFile=%TEMP%\\%~n0.sh"\n(   echo start.sh\n    echo cd desktop/test\n    echo docker-compose up\n) >"%ShellScriptFile%"\nstart "Docker Compose" /D"%ProgramFiles%\\Docker Toolbox" /wait "%ShellScriptFile%"\ndel "%ShellScriptFile%"\nset "ShellScriptFile="\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
    \n
  • call /?...解释%~n0(批处理文件的名称,不带文件扩展名和路径)
  • \n
  • del /?
  • \n
  • echo /?
  • \n
  • set /?
  • \n
  • start /?
  • \n
\n\n

另请阅读有关使用命令重定向运算符的Microsoft 文章,了解>此处使用的重定向运算符用于创建要通过以下 3 行执行的 shell 脚本:

\n\n
start.sh\ncd desktop/test\ndocker-compose up\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n