[Rd] Rscript on Windows

Gabor Grothendieck ggrothendieck at gmail.com
Fri Feb 16 15:35:35 CET 2007


I mentioned this twice already and no one answered;however, I am mentioning
this a third time since its a serious deficiency.   The Rscript facility
that is upcoming in R is useful but on Windows one will often be relegated
to having two files: a batch file and an R file unless the -x switch
is implemented
to allow them to be combined.  This is not a problem on UNIX which supports
#! but on Windows we need -x.  Every other common scripting language including
perl, python and ruby supports -x for this purpose.

(The -x flag would start R processing at the first line that begins with #! so
that prior lines could be Windows batch commands allowing the same file
to be used as a batch file and an R file.)

Note that there is a bug in Windows which means that if you simply associate
.R to running R then the result cannot be redirected.  There is a bug
fix available
for this but I think we need to be able to run out of the box for something this
common.


On 1/29/07, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> Haven't got any feedback on this one.
>
> Will we be getting a perl/python/ruby style -x switch for Rscript for R 2.5.0?
>
> It certainly would give more flexibility to users of Rscript on non-UNIX systems
> where #! notation is not available.
>
> On 1/26/07, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> > Good idea.  ruby seems to work the same way.  python does too but with
> > a slightly different definition:
> >
> > C:\> ruby -h | findstr strip
> >  -x[directory]   strip off text before #!ruby line and perhaps cd to directory
> >
> > C:\> perl -h | findstr strip
> >  -x[directory]   strip off text before #!perl line and perhaps cd to directory
> >
> > C:\> python -h | findstr skip
> > -x     : skip first line of source, allowing use of non-Unix forms of #!cmd
> >
> >
> > On 1/26/07, Vladimir Eremeev <wl2776 at gmail.com> wrote:
> > >
> > > ActivePerl has '-x' switch which tells it to skip all lines in the file till
> > > "#!".
> > > This allows writing perl scripts in ordinary .bat files.
> > >
> > > ?shQuote contains a link with the following perl script example:
> > > ===8<===
> > > @echo off
> > > :: hello.bat
> > > :: Windows executable Perl script
> > > :: Note:
> > > ::   assumes perl.exe is in path
> > > ::   otherwise, use absolute path
> > > perl -x -S "%0" %*
> > > goto end
> > > #!perl
> > >
> > > print "Hello, World!\n";
> > > __END__
> > > :end
> > > :: ------ end of hello.bat ------
> > >
> > > Windows Notes:
> > > " -x " (lower case x): Skip all text until shebang line.
> > > " -S " (upper case S): Look for script using PATH variable. Special meaning
> > > in Windows: appends .bat or .cmd if lookup for name fails and name does not
> > > have either suffix.
> > > " %* " only on WinNT/2K/XP; use %1 %2 . . . %9 on Win9x/DOS
> > > ===8<===
> > >
> > > I think the simplest way to implement shebang on windows would be embedding
> > > one more command line switch with similar functionality to perl's '-x'.
> > >
> > > --
> > > View this message in context: http://www.nabble.com/Rscript-on-Windows-tf3120774.html#a8651815
> > > Sent from the R devel mailing list archive at Nabble.com.
> > >
>



More information about the R-devel mailing list