Why can't I run 2 commands consecutively using batch file for gcloud
Asked Answered
O

2

5

so I have this .bat file:

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

During the first gcloud command, it will suddenly crash the command prompt halfway, but when I copy and paste each line manually into command prompt in the same location as the location I am trying to cd to in the .bat file, it works... Any idea why? I am on Windows 10 by the way.

Searching on Google, I found two related issues, on Github and Stackoverflow.

Github's solution was using python which was not what I needed and Stackoverflow's one did not have anyone helping him/her...

Thanks

Ordonez answered 4/12, 2019 at 23:8 Comment(5)
This is a pure guess but seeing as you have an environment to test with ... try gcloud auth activate-service-account --key-file=keyFileName.json --quietCommentator
"...but when I copy and paste each line manually, it works..." copy where, into a Command Prompt window? at what path?Penetrant
@Commentator Tried that but it stills quits halfway while trying the first command @Penetrant Yes, into a Command Prompt at the same path I am trying to cd to in the .bat file, I have edited my question to reflect that. Sorry for the confusion.Ordonez
Here's another guess ... try the following in your bat file: cmd /c gcloud auth activate-service-account --key-file=keyFileName.jsonCommentator
@Commentator Yes, thank you, it finally worked... i just have to add at the start of both of the gcloud command with cmd /c You may want to add that as a answer so I can mark this as solved, thanksOrdonez
C
7

When running some gcloud commands, they have the expectation that they may be interacting with a user. In addition, they can adversely interact with the current command line processor (CMD on Windows). This can result in the command line processor ending prematurely. One solution is to run your scripted gcloud commands in their own local / nested instance of a command line processor.

If today, your script contains:

gcloud ... some command parameters ...

replace this with:

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

This will cause the gcloud command to run in its own nested environment which won't interfere with the top level (scripted) environment.

Commentator answered 5/12, 2019 at 0:3 Comment(0)
G
4

You can also just add CALL before each command, for example:

CALL gcloud app deploy
CALL gcloud app describe
Garrett answered 4/4, 2020 at 10:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.