[Rd] Rscript on Windows

Gabor Grothendieck ggrothendieck at gmail.com
Sat Feb 17 13:31:37 CET 2007


I think its best if core mods are done by the core group while others
focus on work that can be done external to the core.

Thus, what I have done is to enhance the batchfiles distribution with
3 new batchfiles: Rscript.bat, #Rscript.bat and runR.bat which will be
part of the
next distribution of batchfiles but can be obtained now, if desired, from the
batchfiles svn (with the caveat that they require R 2.5.0).  The batchfiles
home page is here:

   http://code.google.com/p/batchfiles

The source tab on that page gets you to the svn and the links on the right
include links to the NEWS and README files which describe the additions,
a link to info on the Windows bug that I mentioned and two perl links that
describe how this all works in perl which may be a helpful analogous
situation.
.
On 2/17/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 2/16/2007 9:35 AM, Gabor Grothendieck wrote:
> > I mentioned this twice already and no one answered;however, I am mentioning
> > this a third time since its a serious deficiency.
>
> I agree this would be a reasonable addition, but I wouldn't class it as
> a serious deficiency, and I don't plan to work on it myself.
>
> If you want to put together patches to the trunk code and docs to
> implement this I'll review them and possibly commit them.  If you don't
> see this as a high enough priority to do that, then I'd suggest doing
> what I do:  don't use the CMD.EXE shell.  There are a number of
> Unix-like shells available in Windows (Cygwin, MSYS, etc.) that can
> handle the #! syntax just fine.  Or just use two files, as you describe
> below.
>
> Duncan Murdoch
>
>  > 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.
> >>>>
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
>



More information about the R-devel mailing list