2009-09-24 25 views
49

Estoy tratando de crear un comando de menú contextual con el botón derecho para comprimir archivos JavaScript con el compresor YUI. Mi objetivo final es tratar de conseguir que esto se ejecuta en un menú contextual:Obteniendo el nombre del archivo sin extensión en un Windows Batch Script

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

Sé que puedo utilizar la variable %1 para hacer referencia al nombre de archivo que se abrió. No puedo encontrar la manera de obtener este comando en una sintaxis de archivo por lotes y no he podido encontrar respuestas en línea.

Actualización:
respuesta de Jeremy (+ comentarios) trabajó. Para cualquier persona que se topa con esto, aquí es lo que tenía que hacer:

En la acción que he creado para el archivo JavaScript, he utilizado esto como el comando:

minify.bat "%1" 

que llama a mi archivo por lotes, lo cual se parece a esto:

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

para la secuencia de comandos por lotes, tenga en cuenta que el código anterior supone que los directorios para java.exe & yuicompressor son a la vez agregado a sus PATH variables. Si no los agrega a su ruta, deberá usar la ruta completa de los archivos.

La secuencia %~dpn se utiliza para obtener:

  1. %~d - La unidad
  2. %~p - El camino
  3. %~n - El nombre del archivo
+6

Ver 'CALL /? 'Para la lista completa de mejoras en los parámetros de serie de Windows, incluyendo'% ~ x1' para la extensión. –

Respuesta

43

cambiar la acción para llamar a un lote archivo:

RunCompressor.bat "%1" 

Uso %~n1 para obtener el nombre del archivo sin la extensión en RunCompressor.bat:

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

Helpful article

javaw.exe inicio se cierra la ventana de comandos al ejecutar el archivo por lotes.

+0

Intenté usar eso, y en lugar de evaluar el nombre del archivo, terminé con un archivo con el nombre "'% ~ n1.min.js' ". –

+0

¿Qué versión de Windows estás usando? –

+0

Estoy usando Windows XP Pro –

0

Escriba su propia clase que determine el nombre del archivo de salida para enviar al compresor 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 
Cuestiones relacionadas