【发布时间】:2018-12-19 12:56:06
【问题描述】:
我观察到,当我们在 windows 命令提示符下运行简单的 gsutil 或 bq 语句时,它们会成功运行
例如 1:gsutil cp Desktop\MyTraffic.csv gs://BI/
前 2 :bq load --autodetect --replace --source_format=CSV myDataSet.myTable gs://BI/MyTraffic.csv
但是如果我们同时使用像 'runbq.bat' 这样的批处理文件来运行它们,那么只有第一条语句会运行并且命令提示符会立即终止而不会出现任何错误
即使在它们之间添加暂停语句也不会保留命令提示符窗口
runbq.bat:
gsutil cp Desktop\MyTraffic.csv gs://BI/
pause
bq load --autodetect --replace --source_format=CSV myDataSet.myTable gs://BI/MyTraffic.csv
【问题讨论】:
-
您是否检查过转义是否正确完成?通常这是第一个仔细检查。可能会进行一些转义并产生无效命令,重定向输出也可以查看日志。
-
在每个 BQ 语句之前使用
call命令:call gsutil cp Desktop\MyTraffic.csv gs://BI/ -
@Aacini 是的,谢谢,调用语句有效.. 但我可以知道语句调用背后的原因
-
因为
gsutil和bq命令本身就是批处理文件:gsutil.bat和bq.bat。当一个批处理文件在没有call命令的情况下调用另一个批处理文件时,执行只是转移到另一个文件,因此当第二个批处理文件结束时,整个过程结束。为了调用第二个批处理文件并在第二个批处理文件结束时返回第一个批处理文件,需要添加call命令。 -
@Aacini 是的,非常感谢您详细解释
标签: batch-file cmd google-bigquery gsutil