2016-08-18 80 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