1

我正在使用 Firefox 附加组件。我想使用这个命令行执行 IE:

cmd /C start iexplore http://www.google.com

这很好用。但是如果你必须使用参数,它就行不通了:

cmd /C start iexplore https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find

问题是传递的文本将在第一个“&”字符处被截断。如果我将 url 放入引号中,它会再次起作用。

所以我使用这段代码来实现插件:

getIEPath: function () {
        var gMyPrefs = new PrefsWrapper1("extensions.openinbrowser.");
        var iePath = gMyPrefs.getUnicharPref("IEPath");
        return iePath;
    },
    openInBrowser: function (url) {
        var iePath = openinbrowser.getIEPath();

        // create an nsILocalFile for the executable
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(iePath);

        // create an nsIProcess
        var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
        process.init(file);

        // Run the process
        var args = ['/C start iexplore ' + url + ' '];
        process.run(false, args, args.length);
    }

这适用于第一种情况:如果字符串中没有“&”字符,它可以工作。但是如果我把关键线换成

var args = ['/C start iexplore "' + url + '" '];

它不起作用,因为"将被交换为 URI 代码,但 URI 代码在 IE 中不起作用。

你知道解决方案是什么吗(我知道没有cmd它可以工作等,但我需要这个cmd启动解决方案)

4

1 回答 1

1

&您可以使用插入符号转义该角色^

cmd /C start iexplore https://www.google.hu/?gfe_rd=cr^&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find

或者简单地将 URL 括在一对引号中"

cmd /C start "" iexplore "https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find"

由于start将第一个带引号的字符串解释为窗口标题,因此我添加了一个空字符串""

于 2015-09-11T18:34:09.127 回答