2009-09-24 10 views
49

J'essaie de créer une commande de menu contextuel avec le bouton droit de la souris pour compresser les fichiers JavaScript avec le compresseur YUI. Mon but ultime est d'essayer d'obtenir ce pour fonctionner sur un menu contextuel:Obtention du nom de fichier sans extension dans un script batch Windows

java.exe -jar yuicompressor-2.4.2.jar -o <filename>.min.js <filename>.js 

Je sais que je peux utiliser la %1 variable pour référencer le nom du fichier en cours d'ouverture. Je ne peux pas comprendre comment obtenir cette commande dans une syntaxe de fichier par lots et n'ai pas été capable de trouver des réponses en ligne.

Mise à jour:
La réponse de Jeremy (+ commentaires) a fonctionné. Pour toute personne qui trébuche sur ce, voici ce que je devais faire:

Dans l'action que je crée le fichier JavaScript, je ce que la commande:

minify.bat "%1" 

Ce qui appelle mon script batch, qui ressemble à ceci:

java.exe -jar yuicompressor-2.4.2.jar -o "%~dpn1.min.js" %1 

pour le script batch, gardez à l'esprit que le code ci-dessus suppose les répertoires pour java.exe & yuicompressor sont tous deux ajoutés à vos variables PATH. Si vous ne les ajoutez pas à votre chemin, vous devrez utiliser le chemin d'accès complet aux fichiers.

La séquence %~dpn est utilisée pour obtenir:

  1. %~d - Le lecteur
  2. %~p - Le chemin
  3. %~n - Le nom du fichier
+6

Voir'appel /? 'Pour la liste complète des améliorations aux fenêtres des paramètres de traitement par lots, y compris'% ~ x1' pour l'extension. –

Répondre

43

Modifier l'action pour appeler un lot fichier:

RunCompressor.bat "%1" 

Utilisez %~n1 pour obtenir le nom de fichier sans l'extension dans RunCompressor.bat:

start javaw.exe -jar yuicompressor-2.4.2.jar -o "%~n1.min.js" "%1" 

Helpful article

javaw.exe de départ ferme la fenêtre de commande lors de l'exécution du fichier de commandes.

+0

J'ai essayé d'utiliser cela, et au lieu de l'évaluer au nom du fichier, je me suis retrouvé avec un fichier avec un nom de "'% ~ n1.min.js' ". –

+0

Quelle version de Windows utilisez-vous? –

+0

J'utilise Windows XP Pro –

0

Écrivez votre propre classe qui détermine le nom de fichier de sortie à envoyer au compresseur YUI.

java.exe -cp yuicompressor-2.4.2.jar MyClass "%1" 
3
echo path of this file name is: %~dp0 
echo file name of this file without extension is:%~n0 
echo file extention of this file is:%~x0 
echo The file name of this file is: %~nx0 
Questions connexes