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
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, or share through
Last modified: Wednesday, August 4, 2010 11:21 pm
Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.