1

想要打开一个文件,'"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe -f " %s" "'我得到Cannot find e:\Program.

我需要做什么才能让它工作?

编辑:这是我要开始工作的脚本(这是完整的脚本,因为我还不熟悉 perl,抱歉)。当我通过 chrome 的 TextAid 向服务器发出 POST 请求时,它应该启动 gvim。查看第 38 行

4

5 回答 5

1

它要么是单\双引号路径,要么是用反斜杠转义空格。

于 2012-10-09T01:30:12.457 回答
1
system
   sprintf
      '"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe" -f "%s"',
      $file;
于 2012-10-09T01:36:23.283 回答
1

我发现使用正斜杠更安全/更容易。

    my $file = 'C:/Program Files (x86)/Adobe/Reader 10.0/Reader/AcroRd32.exe' ;
    system $file ;

如果您需要 cmmmond 的参数

    my $file = '"C:/Program Files (x86)/Adobe/Reader 10.0/Reader/AcroRd32.exe"' ;
    my $data = '"C:\working_dir/music/interim/a b.pdf"' ;
    system "$file $data" ;

使用单引号可以更轻松地嵌入双引号,而无需转义。

于 2012-10-09T04:33:00.550 回答
0

处理这个问题的一种方法是搞乱引用和转义。您需要确保单独引用命令和命令的每个参数作为单独的字符串。

此外,在 win32 上,您可以使用真正的斜杠而不是反斜杠作为目录分隔符。所以:

system( sprintf '"E:/Program Files (x86)/Vim/vim73/gvim.exe" -f "%s"', $file );

另一个更简单的选择是将参数列表与system().

第 38 行:

my @EDITOR_COMMAND = ( 'E:/Program Files (x86)/Vim/vim73/gvim.exe', '-f' );

第 185/186 行:

system( @EDITOR_COMMAND, $file );

然后所有讨厌的报价都会为您处理。

于 2012-10-09T04:50:46.167 回答
0
our $EDITOR_CMD = "'E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe' -f %s";
于 2012-10-09T08:18:10.760 回答