我想使用 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 命令。
批处理文件是一个脚本文件。脚本需要解释器。对于批处理文件,解释器是cmd.exeWindows 命令解释器 \xe2\x80\x93。
*.sh 文件也是需要解释器的脚本。解释器位于 Unix/Linux 系统上sh,...它们也是可执行文件,但没有文件扩展名bash,因为在 Unix/Linux 上可执行文件通常没有文件扩展名。ksh.exe
在 Windows 上,默认情况下没有安装 Unix/Linux shell 脚本的解释器。如果start start.sh确实有效,那么是因为在 Windows 上安装了 shell 解释器,该解释器已在 Windows 注册表中注册为用于打开 *.sh 文件的应用程序,这意味着通过启动的应用程序解释 shell 脚本文件中的命令。
但是,在 Windows 命令环境中解释cmd.exe并执行的批处理脚本中的命令不能在 shell 解释器的 shell 环境中执行。
start start.sh启动一个与为\xc2\xa0执行批处理文件而创建的Windows命令进程并行运行的新进程。批处理文件处理在此行之后立即继续,执行命令进程中的下一个命令,而 shell 解释器进程并行解释start.sh.
因此,这里需要一个批处理文件,该文件创建一个 shell 脚本,以便start.sh通过 shell 解释器在 shell 环境中调用并执行其他 shell 命令。
下面的批处理代码可能有效。它没有经过我的测试,因为我的 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="\nRun Code Online (Sandbox Code Playgroud)\n\n为了了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
\n\ncall /?...解释%~n0(批处理文件的名称,不带文件扩展名和路径)del /?echo /?set /?start /?另请阅读有关使用命令重定向运算符的Microsoft 文章,了解>此处使用的重定向运算符用于创建要通过以下 3 行执行的 shell 脚本:
start.sh\ncd desktop/test\ndocker-compose up\nRun Code Online (Sandbox Code Playgroud)\n\n这3行是由shell脚本解释器在shell环境中执行的。
\n| 归档时间: |
|
| 查看次数: |
15707 次 |
| 最近记录: |