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 ;

コマンドにパラメータが必要な場合

    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

これを処理する 1 つの方法は、引用符とエスケープをいじることです。コマンドとコマンドの各引数を個別の文字列として個別に引用符で囲む必要があります。

また、win32 では、ディレクトリ セパレータにバックスラッシュの代わりに実際のスラッシュを使用できます。そう:

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

もう 1 つの簡単なオプションは、引数のリストを で使用すること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 に答える