2009-09-24 2 views
49

Sto cercando di creare un comando del menu di scelta rapida facendo clic con il pulsante destro del mouse per comprimere i file JavaScript con il compressore YUI. Il mio obiettivo finale è quello di cercare di ottenere questo per funzionare su un menu contestuale:Ottenere il nome del file senza estensione in uno script batch di Windows

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

So che posso utilizzare la variabile %1 per fare riferimento al nome del file che si apre. Non riesco a capire come ottenere questo comando in una sintassi del file batch e non sono stato in grado di trovare alcuna risposta online.

Aggiornamento:
di Jeremy risposta (+ commenti) ha funzionato. Per chi si imbatte in questo, ecco quello che ho dovuto fare:

In l'azione che ho creato per il file JavaScript, ho usato questo come il comando:

minify.bat "%1" 

che chiama il mio script batch, che assomiglia a questo:

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

per lo script batch, di tenere presente che il codice di cui sopra assume le directory per java.exe & yuicompressor sono entrambi aggiunto ai tuoi PATH variabili. Se non li aggiungi al tuo percorso, dovrai utilizzare il percorso completo per i file.

La sequenza %~dpn viene utilizzato per ottenere:

  1. %~d - L'unità
  2. %~p - Il percorso
  3. %~n - Il nome del file
+6

Vedere 'CALL /?' Per la lista completa dei miglioramenti ai parametri di finestre batch, tra cui '% ~ x1' per l'estensione. –

risposta

43

Cambiare l'azione di chiamare un lotto file:

RunCompressor.bat "%1" 

Usa %~n1 per ottenere il nome del file senza l'estensione in RunCompressor.bat:

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

Helpful article

inizio javaw.exe chiude la finestra di comando quando si esegue il file batch.

+0

Ho provato ad usarlo, e invece di valutare il nome del file, ho finito con un file con un nome di "'% ~ n1.min.js' ". –

+0

Quale versione di Windows stai usando? –

+0

Sto usando Windows XP Pro –

0

Scrive la propria classe che determina il nome file di uscita da inviare al compressore 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