0

社内プロセスの一環として、ZIP ファイルを検査するための Ruby コードをいくつか作成しました。通常、このコードを起動する方法は、Web ブラウザーからです。クリックしてファイルをダウンロードするときは、[プログラムから開く] を選択し、小さなバッチ ファイルへのフル パスを指定します。この 1 行のバッチ ファイルは次のようになります。

\\mathworks\public\Matthew_Simoneau\ruby-1.8.7-p72-i386-mswin32\bin\ruby.exe "%~dp0inspect.rb" %1

私の知る限り、この手法は、Ruby がインストールされていないが、会社の内部ファイルシステムにアクセスできる Windows マシンで Ruby コードを起動する唯一の簡単な方法です。

ZIP ファイルのファイル名にアンパサンドが含まれていると問題が発生します。

これは IE と Chrome で問題なく動作し、上記の行は次のように「展開」されます。

C:\WINNT\Profiles\matthew\Desktop>\\mathworks\public\Matthew_Simoneau\ruby-1.8.7-p72-i386-mswin32\bin\ruby.exe "\\mathworks\public\Matthew_Simoneau\sandbox\inspect\inspect.rb" "C:\WINNT\Profiles\matthew\Local Settings\Temporary Internet Files\Content.IE5\VNATJ3X0\park&park_paper_LMI_neuralN[1].zip"

ただし、Firefox では、ファイル名のアンパサンドの後のすべてが削除されます。

H:\>\\mathworks\public\Matthew_Simoneau\ruby-1.8.7-p72-i386-mswin32\bin\ruby.exe "\\mathworks\public\Matthew_Simoneau\sandbox\inspect\inspect.rb" C:\Temp\park

%1バッチファイルに引用符を入れてみましたが、効果はありません。

これは Firefox のバグだと思います。Firefox のバグ リストを検索しましたが、何も見つかりませんでした。

ここで何か間違ったことをしていますか?これは Firefox のバグですか? もしそうなら、それを回避する方法はありますか?Ruby コードを Web ブラウザーから起動するためのより確実な方法はありますか?

更新: Bugzilla@Mozilla にバグ レポートを提出しましたが、まだ応答がありません。

4

4 に答える 4

1

Linux 上の Firefox 3.5.2 で同様のものをテストしたところ、うまく動作しました (つまり、シェル スクリプトは正しいパスを取得します)。

まず、次のようなスクリプトを使用してみてください。

echo %1 > c:\temp\test.txt

(それが正しい構文であることを願っています。私は長い間cmdを使用していませんでした)

…そして、そのファイルで正しいパスを取得するかどうかを確認します。そのファイルでもアンパサンドが削除されていて、最新バージョンの Firefox を使用している場合は、Windows プラットフォームに固有のバグが見つかったことを意味し、報告する必要があります。

于 2009-09-02T19:25:41.193 に答える
1

どうやらzipファイル名を制御できないため、Rubyコードで次のことを行うことができます...

渡されたファイル名が存在しない場合は、同じフォルダーで、渡されたベース ファイル名の後に「&*.zip」が続くファイルを探します。

これは、「park&foo.zip」などの名前のフォルダーに zip ファイルが存在しない限り、「park&park.zip」に対して機能します。

ファイル名の衝突の可能性が実際にある場合 (つまり、zip がユーザーのマシンから削除されておらず、アンパサンドが一般的である場合)、他の唯一の解決策は、Firefox でファイル名を書き換えるダウンロード マネージャー プラグインを使用することです。途中でアンパサンドを修正する機能。

于 2009-09-02T20:55:34.773 に答える
0

& 文字には %24 を使用します。他の問題のある文字については、URL エンコード表を参照してください: http://webdesign.about.com/library/bl_url_encoding_table.htm

于 2009-09-02T20:38:44.323 に答える
-1

最良の結果を得るには、アンパサンドをエンコードしてください...

&

のように

C:\WINNT\Profiles\matthew\Desktop>\\mathworks\public\Matthew_Simoneau\ruby-1.8.7-p72-i386-mswin32\bin\ruby.exe "\\mathworks\public\Matthew_Simoneau\sandbox\inspect\inspect.rb" "C:\WINNT\Profiles\matthew\Local Settings\Temporary Internet Files\Content.IE5\VNATJ3X0\park&park_paper_LMI_neuralN[1].zip"
于 2009-09-02T18:57:45.790 に答える