2010-09-09 18 views
9

Estoy tratando de encontrar una forma de registrar los archivos con la extensión .pl como archivos ejecutables. Pasé algún tiempo en la web buscando una solución, pero no pude encontrar nada.Ejecutar un script de Perl en Windows sin extensión

Lo que puedo hacer: Hice un script, vamos a llamarlo myscript.pl
puedo correr así:

perl myscript.pl [my_script_parameters] 

Ahora ya que el archivo está asociado con el Perl, que pueda también ejecutarlo como:

myscript.pl [my_script_parameters] 

Ahora, sé que hay alguna parte una lista de extensiones que se considera como ejecutables (.exe, .bat, etc ...). Me gustaría añadir .pla esta lista para que pueda correr mi script como el siguiente:

myscript [my_script_parameters] 

¿Alguien sabe cómo hacer esto?

Respuesta

13

Sí, hay compatibilidad incorporada para esto. Si revisas la ayuda para el comando FTYPE, verás un ejemplo perl.

C:> ayuda FTYPE

Muestra o modifica los tipos de archivo utilizados en una asociación de archivos

FTYPE [fileType [= [openCommandString]]]

fileType Especifica el tipo de archivo examine o cambie openCommandString Especifica el comando de abrir para usar cuando ejecuta los archivos de este tipo.

Tipo FTYPE sin parámetros a muestra los tipos de archivos actuales que tienen cadenas de comando abiertas definidas. FTYPE se invoca con solo un tipo de archivo , muestra la cadena de comando abierta actual para ese tipo de archivo. No especifique nada para la cadena de comando abierto y el comando FTYPE elimine la cadena de comando abierta para el tipo de archivo . Dentro de un comando abierto , la cadena% 0 o% 1 se sustituye por y el nombre de archivo se inicia a través de la asociación. % * obtiene todos los parámetros y% 2 obtiene el primer parámetro ,% 3 el segundo, etc.% ~ n obtiene todos los parámetros restantes comenzando con el enésimo parámetro, donde n puede estar entre 2 y 9, inclusive . Por ejemplo:

ASSOC .pl=PerlScript 
FTYPE PerlScript=perl.exe %1 %* 

le permitiría invocar un Perl script de la siguiente manera:

script.pl 1 2 3 

Si desea eliminar la necesidad de tipo de las extensiones, a continuación, haga lo siguiente:

set PATHEXT=.pl;%PATHEXT% 

y la secuencia de comandos podría invocarse como follo WS:

script 1 2 3 
+0

¿Qué versión de los sistemas operativos de Microsoft tiene esta nueva función? –

+0

Ha existido desde NT, tal vez incluso antes. –

+0

¡Hola! Gracias por su respuesta. Lo intenté pero por alguna razón no sobrevivió al reinicio. Probablemente tengo que encontrar el archivo de configuración correcto que se llama en el momento del arranque. – Pascal

-1

Su mejor enfoque sería escribir un archivo por lotes llamado myscript.bat, colocarlo en su camino, y hacer que se ejecute la secuencia de comandos, por ejemplo ..

@echo off 
c:\perl\bin\perl.exe c:\scripts\myscript.pl %* 
+8

Si desea crear un "contenedor" por lotes para un script Perl, use la utilidad 'pl2bat' que viene con perl. –

+0

¡Hola! Gracias por su respuesta. El problema si uso este método es que tengo que hacer un lote para cada script que escribo ... – Pascal

6

Simplemente puede agregar "; .PL" a la variable de entorno PATHEXT. Haga clic derecho en "Mi PC"> Propiedades> Avanzado> Variables de entorno> Variables del sistema.

+0

¡Hola! ¡Gracias por su respuesta! Sí, eso es exactamente lo que estaba buscando. – Pascal

+0

He agregado '.pl' y' .PL' a 'PATHEXT', pero mi archivo se abre con un editor. Estoy tratando de ejecutar como 'C: \> newprog.pl' –

+0

¿Reinició? ¿O ejecutó 'set' para ver si la variable PATHEXT tiene el nuevo valor en la consola? – AndiDog

Cuestiones relacionadas