Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Windows命令行调用浏览器时,如何使其接受URL参数_Url_Browser_Command Line - Fatal编程技术网

从Windows命令行调用浏览器时,如何使其接受URL参数

从Windows命令行调用浏览器时,如何使其接受URL参数,url,browser,command-line,Url,Browser,Command Line,我正在从命令行启动一个浏览器(如firefox)以及所需的url。(最终我将从perl backticks传递它))但是url有一组参数,命令处理器一直试图将这些参数解释为可执行文件。我怎样才能让它和URL一起传递呢?也就是说,命令是: \progra~2\mozill~1\firefox.exe (如果我将该URL粘贴到浏览器的地址框中,它就可以正常工作。) 命令行显示: “period2”和“interval”不被识别为内部或外部命令、可操作程序或批处理文件 (为什么它没有抱怨其他参数名称?

我正在从命令行启动一个浏览器(如firefox)以及所需的url。(最终我将从perl backticks传递它))但是url有一组参数,命令处理器一直试图将这些参数解释为可执行文件。我怎样才能让它和URL一起传递呢?也就是说,命令是:

\progra~2\mozill~1\firefox.exe

(如果我将该URL粘贴到浏览器的地址框中,它就可以正常工作。)

命令行显示:

“period2”和“interval”不被识别为内部或外部命令、可操作程序或批处理文件

(为什么它没有抱怨其他参数名称?是否有“已批准的参数”列表?)

它调用浏览器并删除参数

如果我将问号后面的所有内容括在引号中,则命令处理程序将忽略它们,并且它们不会出现在浏览器的地址框中


是否有某种方法可以让命令处理器将参数传递给浏览器?或者,如果存在这样的情况,则将参数添加到“已批准”中?

好的,让我们看看是否可以解释这是如何工作的

单击run并输入
\progra~2\mozill~1\firefox.exehttps://finance.yahoo.com/quote/TLT/history?period1=1400828400&period2=1463986800&interval=1mo&filter=history&frequency=1mo
然后单击“确定”。你的浏览器打开了,你得到了你想要的东西

现在,您将其粘贴到cmd行中,但现在它不起作用

原因是您正在使用特定的shell,在本例中是cmd.exe来调用外部程序。问题是cmd shell将特殊字符识别为要使用的参数。例如,如果您这样做:

ping localhost & ping 127.0.0.1
cmd.exe将&视为一个函数。这意味着运行
pinglocalhost
,然后
ping127.0.0.1

因此,如果cmd shell中的任何内容也是cmd函数,但我们不希望将其作为cmd函数使用,而是将其发送到外部,那么我们需要将其括在双引号中。为了证明这一点,我们使用相同的命令并给它一些双引号:

ping "localhost & ping 127.0.0.1"
现在我们得到了一个不同的结果,因为shell看到我们想要ping
localhost&ping 127.0.0.1
作为一个值

双引号基本上是一个函数,我们使用它将引号内的所有内容发送到外部程序

因此,在您的情况下,您希望调用程序,并将引号内的所有内容发送到程序,如下所示:

\progra~2\mozill~1\firefox.exe "https://finance.yahoo.com/quote/TLT/history?period1=1400828400&period2=1463986800&interval=1mo&filter=history&frequency=1mo"

作为旁注。有时候,虽然很少,但你需要使用双引号。此时,您可以在shell中调用shell并发送字符串。第一个shell接收字符串并删除第一个引号,当尝试发送到外部程序时,不存在引号,并且无法执行。当使用双引号时,它将带引号的字符串发送到第二个shell,然后该shell从那里处理它。如果您想要一个这样的示例,请告诉我,而不是与此相关。

请附上整个参数(从“https://...=1mo)在双引号中!就是这样!是的,将整个URL放在双引号中解决了这个问题。非常感谢。