2009-09-02 8 views
0

J'ai écrit du code Ruby pour inspecter des fichiers ZIP dans le cadre d'un processus interne de l'entreprise. La façon dont nous lançons habituellement ce code provient d'un navigateur Web. Lorsque vous cliquez pour télécharger le fichier, vous sélectionnez "ouvrir avec" et spécifiez le chemin d'accès complet à un petit fichier de commandes. Ce fichier de commandes d'une ligne ressemble à ceci:Comment faire pour que Firefox ouvre un fichier avec une perluète dans le nom de fichier?

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

Pour autant que je sache, cette technique est la seule façon facile de lancer mon code Ruby sur une machine Windows qui ne dispose pas de Ruby installé, mais ne dispose accès au système de fichiers interne de l'entreprise.

Je rencontre un problème lorsque le nom de fichier du fichier ZIP contient une perluète.

Cela fonctionne bien sur IE et Chrome, où la ligne ci-dessus se « élargi » sur les points suivants: cependant,

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" 

Sur Firefox, tout après l'esperluette dans le nom du fichier est abandonné sur le sol:

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 

J'ai essayé de mettre le %1 entre guillemets dans le fichier de commandes, mais qui n'a pas d'effet.

Je suppose que c'est un bug dans Firefox. J'ai cherché dans la liste de bug de Firefox, mais je n'ai rien trouvé.

Est-ce que je fais quelque chose de mal ici? Est-ce un bug de Firefox? Si oui, y a-t-il un moyen de contourner ce problème? Existe-t-il un moyen plus robuste de lancer mon code Ruby à partir d'un navigateur Web?

Mise à jour: J'ai déposé avec Bugzilla @ Mozilla, mais il n'y a pas encore eu de réponse.

Répondre

1

Puisque vous avez apparemment aucun contrôle sur les noms de fichiers zip, vous pouvez faire la suivante dans le code Ruby ...

Si le nom de fichier transmis n'existe pas, recherchez dans le même dossier tout fichier dont le nom de fichier est passé par la base suivi de "& * .zip".

Cela fonctionnera pour "parc & park.zip" tant qu'il n'y a pas aussi un fichier zip déjà dans le dossier nommé, par exemple, "parc & foo.zip". S'il existe un réel potentiel de collision de noms de fichier (les zips ne sont pas nettoyés de la machine de l'utilisateur et que les esperluettes sont communes), la seule autre solution pourrait être l'utilisation d'un plug-in de gestionnaire de téléchargement dans Firefox. capacité de réécriture de nom de fichier pour corriger les esperluettes à la baisse.

+0

C'est une bonne idée pour une solution de contournement. Merci! –

-1

Coder votre esperluette pour de meilleurs résultats ...

& 

Comme dans

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

Comment? Au moment où j'atteins le fichier batch, le dommage est déjà fait. –

1

Je viens de tester quelque chose de similaire avec Firefox sur Linux et 3.5.2 il fonctionne bien (c.-à-shell le script obtient le bon chemin).

Vous devriez d'abord essayer d'utiliser un script comme ça:

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

(espérons que c'est la bonne syntaxe, je n'ai pas utilisé cmd depuis longtemps)

... et voir si vous obtenez droit chemin dans ce fichier. Si l'esperluette est également supprimée dans ce fichier et que vous utilisez la dernière version de Firefox, cela signifie que vous avez trouvé un bogue spécifique à la plate-forme Windows et que vous devez le signaler.

+0

Je ne suis pas sûr que ce soit * un * bug - je suppose qu'il a quelque chose à voir avec les chemins UNC, qui peuvent être plus limités que les caractères autorisés dans les noms de fichiers du système de fichiers local. – richardtallent

+0

Si le fichier est enregistré correctement par le navigateur, je ne pense pas que cela puisse être le cas. –

+0

Michal, enregistrer un fichier est tout à fait différent de l'ouvrir à nouveau à partir du système de fichiers via un lien hypertexte. Le premier n'est pas limité par la syntaxe du fichier URI, le dernier est. – richardtallent

Questions connexes