2010-06-03 15 views
8

que estoy tratando de crear un archivo por lotes para ejecutar:lotes - Obtener el nombre del archivo sin la extensión del parámetro pasado

.tex --> .dvi : latex filename.tex 
.dvi --> .ps : dvips -o filename.ps filename 
.ps --> .pdf : ps2pdf filename.ps 

me trataron:

latex %1 
dvips -o %~n%1.ps %n%1 
ps2pdf %~n%1.ps 

asumiendo que ~n me dará el archivo nombre sin la extensión de un archivo pasado. Sin embargo, no funciona (aparte de la primera línea). ¿Alguien sabe la versión correcta?

Respuesta

6

Ok, un poco de ensayo y error me dieron

latex %1 
dvips -o %~n1.ps %~n1 
ps2pdf %~n1.ps 

la que hace el truco

+0

Probablemente debería rodear los argumentos entre comillas en el caso de los nombres de archivo contienen espacios. (por ejemplo, 'dvips"% ~ n1.ps ""% ~ n1 "' '). – jamesdlin

+5

que cree que estos pueden ser útiles a saber: nombre completo:% ~ f1 Drive:% ~ d1 Path:% ~ p1 Nombre del archivo:% ~ n1 extensión del archivo:% ~ x1 nombre corto:% ~ sn1 Extensión de archivo corta:% ~ sx1 Unidad y directorio:% ~ dp1 Nombre de archivo y extensión:% ~ nx1 – Parsa

+0

... y para la ruta completa, menos la extensión, puede usar '"% ~ dpn1 " ' – BrainSlugs83

1
  1. No es necesario especificar la extensión al ejecutar latex y dvips.
  2. Pero ps2pdf necesita la extensión.
  3. Lo siguiente funciona porque uso esto todos los días. ¡Créeme!
rem this is a batch file, named mybatch.bat 
rem it takes a filename without extension 

echo off 

latex %1 
dvips %1 
ps2pdf %1.ps 
+0

Tradicionalmente, echo off está precedido por' @ ', ya que esto evitará que se repita en la consola y es lo primero en un archivo de producción por lotes, también es estándar que los comentarios usen' :: 'en lugar de' rem ', finally: rem no se debe usar para hacer eco de salida a la consola, para eso, use' echo' en su lugar (para una línea en blanco, use 'echo'). – BrainSlugs83

Cuestiones relacionadas