I am trying to find a way to register the files with extension .pl
as executables.
I spent some time on the web looking for a solution, but I couldn't find anything.
What I can do:
I made a script, let's call it myscript.pl
I can run it like this :
perl myscript.pl [my_script_parameters]
Now since the file is associated with perl, I can also run it as:
myscript.pl [my_script_parameters]
Now, I know that there is somewhere a list of extensions that are considered as executables (.exe, .bat, etc…). I would like to add .pl
to this list so that I can run my script like this:
myscript [my_script_parameters]
Does anyone know how to do this?
Yes, there is built-in support for this. If you check the help for command FTYPE you will see a perl example.
C:>help ftype
Displays or modifies file types used
in file extension associations
FTYPE [fileType[=[openCommandString]]]
fileType Specifies the file type to
examine or change openCommandString
Specifies the open command to use when
launching files
of this type.
Type FTYPE without parameters to
display the current file types that
have open command strings defined.
FTYPE is invoked with just a file
type, it displays the current open
command string for that file type.
Specify nothing for the open command
string and the FTYPE command will
delete the open command string for the
file type. Within an open command
string %0 or %1 are substituted with
the file name being launched through
the assocation. %* gets all the
parameters and %2 gets the 1st
parameter, %3 the second, etc. %~n
gets all the remaining parameters
starting with the nth parameter, where
n may be between 2 and 9, inclusive.
For example:
ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe %1 %*
would allow you to invoke a Perl
script as follows:
script.pl 1 2 3
If you want to eliminate the need to
type the extensions, then do the
following:
set PATHEXT=.pl;%PATHEXT%
and the script could be invoked as
follows:
script 1 2 3
You can simply add ";.PL" to the PATHEXT environment variable. Right-click "My computer" > Properties > Advanced > Environment variables > System variables.
Your best approach would be to write a batch file called myscript.bat
, place it in your path, and have it run your script.. e.g.
@echo off
c:\perl\bin\perl.exe c:\scripts\myscript.pl %*