想要打开一个文件,'"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe -f " %s" "'
我得到Cannot find e:\Program
.
我需要做什么才能让它工作?
编辑:这是我要开始工作的脚本(这是完整的脚本,因为我还不熟悉 perl,抱歉)。当我通过 chrome 的 TextAid 向服务器发出 POST 请求时,它应该启动 gvim。查看第 38 行
它要么是单\双引号路径,要么是用反斜杠转义空格。
system
sprintf
'"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe" -f "%s"',
$file;
我发现使用正斜杠更安全/更容易。
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" ;
使用单引号可以更轻松地嵌入双引号,而无需转义。
处理这个问题的一种方法是搞乱引用和转义。您需要确保单独引用命令和命令的每个参数作为单独的字符串。
此外,在 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 );
然后所有讨厌的报价都会为您处理。
our $EDITOR_CMD = "'E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe' -f %s";