Batch Files as Shell Scripts Revisited
Four years ago I wrote about a method that could be used to have the Unix Bourne shell interpret Windows batch files. I'm using this trick a lot, because programming using the Windows/DOS batch files facilities is decidedly painful, whereas the Bourne shell remains a classy programming environment. There are still many cases where the style of Unix shell programming outshines and outperforms even modern scripting languages.
The solution I came up involves starting each batch file that contains a Unix shell script with the following sequence:
@#!sh %0.bat %*
sh
, and the batch file named
#!sh.bat.
(Download the file by right-clicking on the link;
note that the file name starts with #!
).
I had to rewrite the original #!sh.bat
helper code implementation,
because nowadays Cygwin complains when it sees a Windows-style
path.
Therefore, the helper code converts the batch file's Windows path into
the Cygwin style, before passing it to the Unix shell.
While at it I also removed a limitation of the original implementation
that restricted the command line arguments to ten.
If you think that I'm unfairly criticizing batch file programming, have a look at the code to see the contortions I had to go through in order to perform a fairly simple task. On the other hand, this is the only batch file I'll ever need to write. Enjoy!
Read and post comments