0

問題批處理文件不某些計算機上完成 - 使用谷歌開發者控制檯

我有以下批處理文件(見下文),我自己的電腦上運行成功。它運行一個用GooeyParser編譯的Python可執行文件,通過臨時文本文件將一些變量傳遞給批處理腳本,然後使用Google Dev Console將文件上傳到GSC,然後將文件上傳到BigQuery。

在我的同事電腦上,批處理腳本剛剛在gsutil命令後停止運行。沒有錯誤消息,腳本停止運行。

單個命令在他的電腦上成功運行。

有誰知道爲什麼批處理腳本可能只能部分運行?

批處理文件

::spawns as a subprocess to avoid console window closing and losing error messages 
if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit) 

::python script writes out file location to temporary file 
"BQ Single File Upload - dont run by itself.exe" 
SET /p FILEUPLOAD=<temp_file_path 
SET /p FILENAME=<temp_filename 
SET /p DATASET=<temp_dataset 
SET /p TABLE=<temp_table 
SET /p SCHEMA=<temp_schema 
DEL temp_file_path 
DEL temp_filename 
DEL temp_dataset 
DEL temp_table 
DEL temp_schema 

gsutil cp %FILEUPLOAD% "gs://our_data/%FILENAME%" 

cmd.exe /c bq mk %DATASET% 

bq load --max_bad_records=5 --skip_leading_rows=1 --allow_quoted_newlines --schema %SCHEMA% %DATASET%%TABLE% "gs://our_data/%FILENAME%" 
PAUSE 
+0

爲什麼你一直把它稱作** BASH **腳本? – Squashman

+0

只要看看關於編譯python腳本的其他問題,您的計算機上可能存在一些其他計算機上不存在的DLL。 – Squashman

+2

您是否在命令提示符窗口中運行批處理文件以避免命令進程自動關閉以便能夠查看錯誤消息或者只需雙擊導致Windows自動關閉的批處理文件(如果Windows命令處理器停止批處理文件的執行? – Mofi

回答

0

新增電話,(謝謝@Mofi)。這是最後的腳本,現在可以在我們的電腦上運行。

::spawns as a subprocess to avoid console window closing and losing error messages 
if not defined in_subprocess (cmd /k set in_subprocess=y ^& %0 %*) & exit) 

::python script writes out file location to temporary file 
"BQ Single File Upload - dont run by itself.exe" 
SET /p FILEUPLOAD=<temp_file_path 
SET /p FILENAME=<temp_filename 
SET /p DATASET=<temp_dataset 
SET /p TABLE=<temp_table 
SET /p SCHEMA=<temp_schema 
DEL temp_file_path 
DEL temp_filename 
DEL temp_dataset 
DEL temp_table 
DEL temp_schema 

call gsutil cp %FILEUPLOAD% "gs://our_data/%FILENAME%" 

call cmd.exe /c bq mk %DATASET% 

call bq load --max_bad_records=5 --skip_leading_rows=1 --allow_quoted_newlines --schema %SCHEMA% %DATASET%%TABLE% "gs://our_data/%FILENAME%" 
PAUSE 
+2

您不應該在cmd.exe中使用CALL。你應該能夠做到這一點。 'call bq mk%DATASET%' – Squashman

+0

這是一個很好的觀點,我認爲在這一點上它們的用途是相同的(如果命令失敗 - 繼續) –

相關問題