2009-09-02 122 views
0

我已經寫了一些Ruby代碼來檢查ZIP文件作爲公司內部流程的一部分。我們通常啓動此代碼的方式來自Web瀏覽器。當您單擊下載文件時,您選擇「打開方式」並指定小批處理文件的完整路徑。這一個單行批處理文件看起來像這樣:如何使Firefox打開一個文件名爲&的文件?

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

據我所知,這種技術是唯一的簡單的方法來啓動我的Ruby代碼在Windows機器上沒有安裝紅寶石,但確實有訪問公司內部文件系統。

當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的bug列表,但沒有找到任何東西。

我在這裏做錯了什麼?這是一個Firefox錯誤?如果是這樣,我有辦法解決它嗎?有沒有更強大的方式從Web瀏覽器啓動我的Ruby代碼?

更新:我申請a bug report與Bugzilla的@ Mozilla的,但一直沒有響應了。

回答

1

既然你顯然有比ZIP文件名沒有控制,你可以做以下在Ruby代碼 ...

如果傳遞的文件名不存在,請在同一個文件夾中查找任何帶有基本文件名後跟「& * .zip」的文件。

只要在名爲「park & foo.zip」的文件夾中不存在zip文件,這將適用於「park & park.zip」。

如果真的存在文件名衝突的可能性(即,用戶的機器上的拉鍊沒有被清理掉,並且&符號很常見),唯一的解決方案可能是在Firefox中使用下載管理器插件,文件名重新寫入功能來解決任何&符號。

+0

這是一個解決方法的好主意。謝謝! – 2009-09-03 16:01:23

-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" 
+0

如何?到達批處理文件時,損壞已經完成。 – 2009-09-02 18:59:53

1

我剛剛測試了類似的東西在Linux上的Firefox 3.5.2和它工作得很好(即殼腳本得到正確的路徑)。

你應該首先嚐試使用類似的腳本:

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

(希望這是正確的語法,我沒有很長一段時間使用CMD)

...看看你該文件中的正確路徑。如果該文件中的&符號被剝離,並且您使用的是最新版本的Firefox,那麼這意味着您發現特定於Windows平臺的錯誤,並且應該報告它。

+0

我不確定它*是一個錯誤 - 我懷疑它與UNC路徑有關,這可能比本地文件系統允許的文件名中的字符更有限。 – richardtallent 2009-09-02 20:58:27

+0

如果文件被瀏覽器正確保存,我不認爲可能是這種情況。 – 2009-09-02 22:52:38

+0

Michal保存文件與通過超鏈接從文件系統再次打開文件完全不同。前者不受文件URI語法的限制,後者是。 – richardtallent 2009-09-03 15:29:33

相關問題