在Windows上自动执行Google Cloud SDK安装,GCLOUD不会被识别为内部或外部命令

时间:2017-11-08 23:56:36

标签: windows batch-file google-cloud-platform gcloud

我正在使用以下批处理文件下载并解压缩google-cloud-sdk,

文件名:download.bat

set home=%USERPROFILE%
echo %home%
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -Command "(New-Object Net.WebClient).DownloadFile('https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-179.0.0-windows-x86_64-bundled-python.zip', '%home%/google-cloud-sdk.zip');& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('%home%/google-cloud-sdk.zip', '%home%/google-cloud-sdk'); }"

我正在使用以下批处理文件在Windows上安装SDK 静默

文件名:install_win.bat

call %USERPROFILE%\google-cloud-sdk\google-cloud-sdk\install.bat --path-update=true --usage-reporting=false --command-completion=false

当我尝试使用以下命令从另一个批处理文件授权我的serice帐户时,成功完成这些步骤后,

gcloud auth activate-service-account --key-file {json fila path}

它失败并告诉我glcoud无法识别内部或外部命令。

任何人都可以帮我解决这个错误吗? 我认为错误是因为在带有bin文件的SDK中缺少环境变量。 如何从批处理文件中设置它?

1 个答案:

答案 0 :(得分:0)

...cloud...\install.bat例程是call,因此它继承了调用例程的环境。它不会将任何更改传达回调用例程。

由于我假设install.bat由第三方提供,因此无法更改,因此您需要检索当前的新path cmd实例。

call %USERPROFILE%\...\install.bat ...
FOR /f "delims=" %%a IN ('echopath') DO SET "newpath=%%a"

其中echopath.bat只是一行:

echo %path%

如果echopath.bat可以访问 - 并且必须是一个单独的文件,而不是内部例程 - 应返回新路径(在此实例中为newpath - I让你猜出你需要做出哪些改变才能将其改为path ...)

由于执行外部批处理会重新加载环境,修改后的环境path将由echopath报告,因此会分配给指定的变量。