【问题标题】:Pipe delimiter in .bat file.bat 文件中的管道分隔符
【发布时间】:2019-08-27 15:23:02
【问题描述】:

我正在尝试使用 bat 文件中的 bq 命令将表从 BigQuery 导出到 Google CLoud Storage (GCS)。该命令有一个要导出为管道分隔文件的参数。该命令按原样在 CLI 中运行,但是当我使用 call 命令从 bat 文件运行时,它会打开命令但不执行它。注意:相同的操作在没有管道分隔符参数的情况下运行。

知道为什么吗?

call bq extract -F^^^| my-project:my-dataset.mytable gs://myfolder/myfile.csv

这是我的 bat 文件中唯一的一行。当我从命令行运行时,它可以工作:

C:\bq extract -F^^^| my-project:my-dataset.mytable gs://myfolder/myfile.csv

输出:

等待 bqjob_r01419067_00000169eed1d868_1 ... (0s) 当前状态:完成

当我运行 bat 文件时,C:\test.bat

输出:

C:\bq 提取 -F^|我的项目:my-dataset.mytable gs://myfolder/myfile.csv C:\

【问题讨论】:

  • 您为什么使用 CALL?为什么要三重转义管道分隔符?对于我使用的某些程序,它就像引用您要使用的分隔符一样简单。 -F "|"。使用 CALL 将使命令中的所有插入符号加倍。
  • 我也会试试-F"^|"
  • 嗨@Squashman,我正在使用CALL,因为我有更多命令要添加,如果我不使用它,在第一个命令之后处理停止。报价无效
  • 你试过-F"^|"吗?我发现另一个question on StackOverFlow 说确实有效。
  • 是的,它可以从命令行运行,但不能从 bat 文件运行。C:\Users\myfolder>CALL bq extract -F"^|" my-project:mydataset.mytable gs://myfolder/Fact.csv 文件名、目录名或卷标语法不正确。

标签: windows batch-file google-bigquery command-line-arguments


【解决方案1】:

如果Jeb's 解决方案正确,您应该可以将批处理文件代码更改为此。

set "caret=^"
call bq extract -F"%%CARET%%|" my-project:my-dataset.mytable gs://myfolder/myfile.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 2021-04-28
    相关资源
    最近更新 更多