2016-08-18 78 views
0

我正在使用Firebase作爲我的主機。當我上傳我的網頁,我需要調用兩個CMD指令:批處理文件提示使用管道中的空間

  1. 火力初始化
  2. 火力部署

當我運行火力初始化我必須回答一些問題去。對於第一個問題,我輸入y代表第二個問題,我需要輸入空格取消選擇一個項目,然後輸入繼續。

我正在嘗試爲此說明使用批處理文件。

我發現我可以用一個管道在一個批處理文件內容如下,該文件是這樣的:

echo y | firebase init 

但這種「回聲Y」僅用於火力初始化的第一條指令。之後,我需要用「空格」和「輸入」取消選擇一個項目。

我怎麼可以這樣寫:

(echo y 
echo "space" 
echo "enter") | firebase init 
+1

嘗試使用'火力--non交互式init'和'火力--non交互式deploy'而不'echo'命令和管道。 –

+0

它不起作用。出現interacitve提示。 –

+0

這就是你不希望它是互動的。這就是爲什麼你想通過管道傳遞答案。你想要的是在'--non-interactive'後面的命令行中指定附加參數的方法,相當於交互式給出的答案。 –

回答

0

(
(echo(y) 
(echo() 
(echo() 
) | firebase init 

這將通過

y<Linefeed> 
<space><Linefeed> 
<Linefeed> 

括號似乎是不平衡的管嘗試,但它是正確的這樣如echo(確保內容將按原樣打印。

+0

這不起作用。 –

+0

我認爲「space」和「enter」沒有被識別。也許有一些等效的批處理文件按下空格鍵並輸入密鑰。 –

+0

當我輸入^時,它被重新調整。但是,只有當我輸入「echo^| firebase init」時纔是這種情況。當我輸入「(echo y echo ^)| firebase init」時,批處理文件不會啓動。 –

0

應該爲你工作嗎?

@echo off 

:: start command 
firebase init 

:: wait command to load. IP must be unreachable for -w to work as expected 
ping 1.1.1.1 -n 1 -w 500 >NUL 

call:sendKeys 

exit/B 

:: spawn a cscript to echo desired keys to the same cmd window 
:: sleep time may need to be changed 
:sendKeys 
SetLocal 
set "_vbs_file_=%TEMP%\keys.vbs" 
(
    echo(set oWS ^= CreateObject^("wScript.Shell"^) 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "y" 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys " " 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "{ENTER}" 
)>"%_vbs_file_%" 
if exist "%TEMP%\keys.vbs" (set "_spawn_=%TEMP%\keys.vbs") else (set "_spawn_=keys.vbs") 
ping 1.1.1.1 -n 1 -w 50 >NUL 
start /B /WAIT cmd /C "cls & "%_spawn_%" & del /F /Q "%_spawn_%" 2>NUL" 
exit/B 0 

編輯:作爲回波發送一個明確的回車,所述的SendKeys可以是(也平延遲現在是1500毫秒)

@echo off 

:: start command 
firebase init 

:: wait command to load. IP must be unreachable for -w to work as expected 
ping 1.1.1.1 -n 1 -w 1500 >NUL 

call:sendKeys 

exit/B 

:: spawn a cscript to echo desired keys to the same cmd window 
:: sleep time may need to be changed 
:sendKeys 
SetLocal 
set "_vbs_file_=%TEMP%\keys.vbs" 
(
    echo(set oWS ^= CreateObject^("wScript.Shell"^) 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "y" 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "{ENTER}" 
    echo(oWS.SendKeys " " 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "{ENTER}" 
    echo(wScript.Sleep 100 
    echo(oWS.SendKeys "{ENTER}" 
)>"%_vbs_file_%" 
if exist "%TEMP%\keys.vbs" (set "_spawn_=%TEMP%\keys.vbs") else (set "_spawn_=keys.vbs") 
ping 1.1.1.1 -n 1 -w 50 >NUL 
start /B /WAIT cmd /C "cls & "%_spawn_%" & del /F /Q "%_spawn_%" 2>NUL" 
exit/B 0 
+0

firebase init啓動並且在第一個提示問題上沒有任何反應。 –

+0

它不起作用。它首先掛起問題。 –

1

首先firebase.json文件必須以回波在創建正確的目錄。這取代了firebase init命令。

然後運行:firebase deploy -P項目別名。

在bash它看起來像:

回聲$'{ 「數據庫」:{ 「規則」: 「database.rules.json」 }, 「託管」:{ 「公「: 「公共」, 「重寫」:[{ 「源」: 「**」, 「目的地」: 「/index.htm」 明明 } ] } } \ N」> firebase.json

火力部署-P Test_Google_Analytics