2009-02-17 7 views
0

Sous Windows, j'essaie d'obtenir le nom du fichier en utilisant le paramètre% ~ f1. Je le fais à partir d'une nouvelle voix (commande) que j'ai ajoutée au menu contextuel.Problème de lecture des arguments à partir du script batch

Dans le registre Windows, la voix appelle simplement un script batch qui imprime le nom du fichier, de cette façon:

`C:\script.bat %~f1` 

mais je reçois cette sortie:

`C:\Documents and Settings\Administrator\Desktop\%~f1` 

donc, la le chemin est ok, mais qu'en est-il du nom de fichier?!

Suggestions? Merci!

+0

les internes de la chauve-souris seraient bien. –

Répondre

2

Lorsque l'élément de menu contextuel il a déclenché, il est fait en Explorer (pas cmd.exe) et Explorer ne met pas en oeuvre% ~ f1. D'où vous obtenez le résultat actuel. Ce dont vous avez besoin est de modifier votre script afin qu'il reçoive le nom de fichier entier (vous ne mettriez probablement que 'C: \ script.bat% 1' ou 'C: \ script.bat' dans le registre) et mettez à jour votre script pour utiliser% ~ f1:

@echo first argument: %1 
@echo filename only: %~f1 
@notepad %~f1 

Bonne chance avec ça!

+0

Vous voudrez peut-être placer l'argument entre guillemets comme 'C: \ script.bat "% 1"' si vous l'appelez directement, sinon des espaces dans le nom de fichier risquent de gâcher les choses aussi. –

+0

résolu en utilisant 'C: \ script.bat "% 1", merci beaucoup :) – Giancarlo

0

Essayez d'entourer la variable entière en%.

C:\script.bat %~f1%

Questions connexes