【问题标题】:Why can't I run 2 commands consecutively using batch file for gcloud为什么我不能使用 gcloud 的批处理文件连续运行 2 个命令
【发布时间】:2021-12-07 08:43:12
【问题描述】:

所以我有这个 .bat 文件:

@echo off
cd C:\Users\user\Downloads
gcloud auth activate-service-account --key-file=keyFileName.json
gcloud auth print-access-token
pause

在第一次 gcloud 命令,它会突然使命令提示符中途崩溃,但是当我将每一行手动复制并粘贴到与我尝试的位置相同的位置的命令提示符中时 cd 要在 .bat 文件,它可以工作......知道为什么吗?顺便说一句,我在 Windows 10 上。

在 Google 上搜索,我发现了两个相关问题,分别在 GithubStackoverflow

Github 的解决方案是使用 python,这不是我需要的,而 Stackoverflow 的解决方案没有任何人帮助他/她...

谢谢

【问题讨论】:

  • 这是一个纯粹的猜测,但看到你有一个测试环境......试试 gcloud auth activate-service-account --key-file=keyFileName.json --quiet
  • "...但是当我手动复制和粘贴每一行时,它可以工作..." 复制到命令提示符窗口的位置?在什么路径?
  • @Kolban 试过了,但是在尝试第一个命令时它仍然中途退出 @aschipfl 是的,进入命令提示符,在我试图 cd.bat 文件的同一路径中,我已编辑我的问题以反映这一点。很抱歉造成混乱。
  • 这是另一个猜测...在您的 bat 文件中尝试以下操作: cmd /c gcloud auth activate-service-account --key-file=keyFileName.json
  • @Kolban 是的,谢谢,它终于奏效了……我只需要在 gcloud 命令和 cmd /c 的开头添加您可能想添加它作为答案所以我可以将此标记为已解决,谢谢

标签: batch-file google-cloud-sdk


【解决方案1】:

在运行一些 gcloud 命令时,他们期望自己可能正在与用户交互。此外,它们可能与当前的命令行处理器(Windows 上的 CMD)产生不利的交互。这可能导致命令行处理器过早结束。一种解决方案是在它们自己的本地/嵌套命令行处理器实例中运行脚本化 gcloud 命令。

如果今天,您的脚本包含:

gcloud ... some command parameters ...

将其替换为:

cmd /c gcloud ... some command parameters ...

这将导致 gcloud 命令在其自己的嵌套环境中运行,不会干扰顶级(脚本)环境。

【讨论】:

    【解决方案2】:

    您也可以在每个命令前添加CALL,例如:

    CALL gcloud app deploy
    CALL gcloud app describe
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2017-12-02
      • 2018-11-12
      • 2021-11-14
      • 1970-01-01
      • 2017-11-30
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多