Ruby 如何让Firefox打开文件名中带有符号的文件?

Ruby 如何让Firefox打开文件名中带有符号的文件?,ruby,firefox,batch-file,escaping,ampersand,Ruby,Firefox,Batch File,Escaping,Ampersand,我已经编写了一些Ruby代码,作为公司内部流程的一部分来检查ZIP文件。我们通常从web浏览器启动此代码。单击下载文件时,选择“打开方式”,并指定小批量文件的完整路径。此单行批处理文件如下所示: \\mathworks\public\Matthew_Simoneau\ruby-1.8.7-p72-i386-mswin32\bin\ruby.exe "%~dp0inspect.rb" %1 据我所知,这项技术是在没有安装Ruby但可以访问公司内部文件系统的Windows机器上启动Ruby代码的唯

我已经编写了一些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中的一个bug。我搜索了Firefox的bug列表,但没有找到任何东西

我做错什么了吗?这是Firefox的bug吗?如果是这样的话,我有办法解决这个问题吗?有没有更健壮的方法从web浏览器启动Ruby代码


更新:我与Bugzilla@Mozilla,但还没有回应。

为获得最佳结果,请对您的符号和进行编码

&


我刚刚在Linux上测试了与Firefox 3.5.2类似的东西,效果很好(即shell脚本获得了正确的路径)

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

echo %1 > c:\temp\test.txt
(希望这是正确的语法,我很久没有使用cmd了)


…并查看文件中的路径是否正确。如果该文件中的符号也被删除,并且您使用的是最新版本的Firefox,这意味着您发现了特定于Windows平台的bug,您应该报告它。

使用%24作为&character。请参阅URL编码表以了解其他此类有问题的字符:

由于您显然无法控制zip文件名,因此可以在Ruby代码中执行以下操作

如果传递的文件名不存在,请在同一文件夹中查找基本传递文件名后跟“&*.zip”的任何文件

这将适用于“park&park.zip”,只要名为“park&foo.zip”的文件夹中还没有zip文件


如果确实存在文件名冲突的可能性(即,拉链没有从用户的机器上清除,并且符号是常见的),唯一的解决方案可能是在Firefox中使用具有文件名重新写入功能的下载管理器插件来修复掉下来的任何符号。

如何解决?当我到达批处理文件时,损坏已经发生了。我不确定这是否是一个bug——我怀疑它与UNC路径有关,UNC路径可能比本地文件系统允许的文件名中的字符更有限。如果浏览器正确保存了文件,我想不会是这种情况。Michal,保存文件与通过超链接从文件系统再次打开文件完全不同。前者不受文件URI语法的限制,后者是.Richard,UNC路径是一个很好的怀疑,所以我将其映射到一个驱动器并进行了测试。可悲的是,它没有改变任何东西。我刚刚在WindowsXP上用标准Firefox安装对它进行了测试,它在ampersand上删除了路径,所以它是一个bug。如何?当我到达批处理文件时,损坏已经完成。
echo %1 > c:\temp\test.txt