How to make the rmligs script available globally on Windows?
My answer has nothing to do with TeX at all, but I hope to answer your question.
In order to run commands on an arbitrary folder, they need to be "known" by the operating system. How do the system know if a command is available? A search in the path. So, first things first:
Extract the content of rmligs-0.84.tar.gz
to a folder. I suggest to avoid spaces in directory names. In my case, I extracted to C:\paulo\softwares\rmligs
.
If I dir
my directory, I have:
14/11/2002 18:54 359 BUGS
14/11/2002 19:19 466 Changes
10/01/2000 19:22 747 Copyright
02/11/1999 18:28 18.007 GPL2
28/11/1999 19:43 269 makefile
14/11/2002 20:06 699 MD5sums
18/03/2000 12:40 2.621 PGPKeys
14/11/2002 18:52 4.002 README
14/11/2002 17:12 28.799 rmligs
14/11/2002 19:55 1.641 rmligs.1
01/12/1999 09:53 791 testfile.tex
14/11/2002 19:04 5 VERSION
Now, lets add that directory to the Windows path. As Canageek mentioned, go to Control Panel -> System and Security\System -> Advanced system settings -> Environment settings
. For God's sake, take care. :)
I usually prefer to change my user variables
instead of the system variables
, so double-click the PATH
variable under user variables
, go to the end of the line, type ;
and add the full path we set in the previous step:
(Sorry, my Windows is in Portuguese, but I hope you get the idea)
Then click OK
a bunch of times. :)
Now let's go to the command prompt:
It didn't work you bastard! I'll explain why. There's a system variable called PATHEXT
, if I echo it (it might be different on your computer):
C:\Users\Paulo>echo %PATHEXT%
.SCM;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.wlua;.lexe;.RB;.RBW
Those are the files which can be executed in the command prompt and their order. As you can see, if you have bla.exe
and bla.bat
in the path, the first one will be executed because it has a higher priority. Now lets add our rmligs
Perl script.
Go to the rmligs
directory (in my case, C:\paulo\softwares\rmligs
) then create a file called rmligs.cmd
(I'm a fan of .cmd
instead of .bat
) with the following content:
@echo off
perl %~dp0\rmligs %1 %2 %3 %4 %5 %6 %7 %8 %9
Done! Lets break it:
perl
is the interpreter, %~dp0\rmligs
gives the the full path to the script, and %1
to %9
are the arguments provided to the .cmd
script. Great!
Now lets open another command prompt:
Cool take all my money! Now lets test it. I copied testfile.tex
to my Documents
folder, lets see if it works:
Yay! Hope it helps. :)
I have the impression the question is also about the scripts folder in miktex. The miktex bin folder contains a number of small executables (like e.g. makeglossaries.exe
, makeluafontdb.exe
, htlatex.exe
) which are simple wrappers which points to perl scripts or lua scripts or batch files which resides in the miktex/scripts folder.
You can't add your own wrapper .exe and scripts (or change the pathes or names of the existing ones) in this way. For security reasons miktex uses a protected file (scripts.ini) which contains the list of the allowed scripts.
So if you will have to use the usual non-miktex methods like writing a small batch file and then put this batchfile somewhere in your path.
If you don't like wrapper scripts you can use the two commands:
ASSOC .pl=PerlScript
FTYPE PerlScript=perl.exe %1 %*
This allows 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
Of course you have to adjust the PATH
environment variable as in Paulo Cereda answers. Otherwise the script will not be found.