0

作为公司内部流程的一部分,我编写了一些 Ruby 代码来检查 ZIP 文件。我们通常启动此代码的方式是从 Web 浏览器。单击下载文件时,选择“打开方式”并指定小批处理文件的完整路径。这个单行批处理文件如下所示:

\\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 错误吗?如果是这样,有没有办法解决它?有没有更强大的方法可以从 Web 浏览器启动我的 Ruby 代码?

更新:我向 Bugzilla@Mozilla 提交了错误报告,但还没有回复。

4

4 回答 4

1

我刚刚在 Linux 上测试了与 Firefox 3.5.2 类似的东西,它运行良好(即 shell 脚本获得了正确的路径)。

您应该首先尝试使用这样的脚本:

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 回答