想要在'"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe -f " %s" "'
打开一个文件,我正在Cannot find e:\Program
。
我需要做些什么才能让它发挥作用?
编辑:这是script我正在努力工作(这是完整的脚本,因为我还不熟悉perl,对不起)。当我通过chrome的TextAid向服务器发出POST请求时,它应该启动gvim。查看第38行
答案 0 :(得分:1)
它是单个\双引用路径或使用反斜杠转义空格。
答案 1 :(得分:1)
system
sprintf
'"E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe" -f "%s"',
$file;
答案 2 :(得分:0)
我发现使用正斜杠更安全/更容易。
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" ;
使用单引号可以更轻松地嵌入双引号而无需逃避。
答案 3 :(得分: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 );
然后所有讨厌的引用都会为你照顾。
答案 4 :(得分:0)
our $EDITOR_CMD = "'E:\\Program Files (x86)\\Vim\\vim73\\gvim.exe' -f %s";