[R] Calling FING.EXE under RGui.EXE for windows.

Henrik Bengtsson hb at stat.berkeley.edu
Sun Jan 10 17:25:22 CET 2010


> cat(file="foo.txt", "Hello world\n")

> shell('find "Hello" < foo.txt')
Hello world
> shell('find "Hello" < foo.txt', intern=TRUE)
[1] "Hello world"

> shell('type foo.txt | find "Hello"')
Hello world
> shell('type foo.txt | find "Hello"', intern=TRUE)
[1] "Hello world"

A person at http://www.experts-exchange.com/Programming/Misc/Q_20857955.html
give the hypotheses that the 'Errorlevel' returned is not from whether
'find.exe' was executed or not, but whether find finds the string or
not.  This is consistent with:

> res <- shell('find "Hello" < foo.txt');
Hello world
> res
[1] 0
> res <- shell('find "Hellor" < foo.txt');
Warning message:
In shell("find \"Hellor\" < foo.txt") :
  'find "Hellor" < foo.txt' execution failed with error code 1
> res
[1] 1


I still don't understand their argument why you have to redirect/pipe
in the foo.txt file for it to work;

> shell('find "Hello" foo.txt')
Warning message:
In shell("find \"Hello\" foo.txt") :
  'find "Hello" foo.txt' execution failed with error code 1
> shell('find "Hello" foo.txt', intern=TRUE)
character(0)

/Henrik


2010/1/10 hb <hb at stat.berkeley.edu>:
> Forgot to say that when you use that findit.bat script, you get:
>
> Rgui.exe:
>
>> system("findit.bat")
> Errorlevel is 1, not found
>> shell("findit.bat")
> Errorlevel is 1, not found
>
> Rterm.exe:
>
>> shell("findit.bat")
> c:\config.sys
> Errorlevel is 0, found
>> system("findit.bat")
> c:\config.sys
> Errorlevel is 0, found
>
> Windows Vista Business SP2
>
>> sessionInfo()
> R version 2.10.1 Patched (2010-01-01 r50884)
> i386-pc-mingw32
>
> locale:
> [1] LC_COLLATE=English_United States.1252
> [2] LC_CTYPE=English_United States.1252
> [3] LC_MONETARY=English_United States.1252
> [4] LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> loaded via a namespace (and not attached):
> [1] tools_2.10.1
>
> /H
>
>
> 2010/1/10 hb <hb at stat.berkeley.edu>:
>> Article ID: 106203 - Last Review: November 1, 2006 - Revision: 3.1
>> FIND.EXE Does Not Return the Proper Errorlevel in Windows NT
>> http://support.microsoft.com/kb/106203
>>
>> /Henrik
>>
>> On Sun, Jan 10, 2010 at 5:39 AM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>>> Gabor Grothendieck wrote:
>>>>
>>>> I noticed this does work, i.e. it displays the requested help info, in
>>>> Rgui on my Vista system:
>>>>
>>>> library(tcltk)
>>>> .Tcl("exec find /?")
>>>>
>>>
>>> Yes, here too.  It stores the output in a tclObj, so it's doing what we want
>>> to do.  Anyone familiar with the Tcl source, and can spot the difference
>>> between their exec and our system()?
>>>
>>> Duncan Murdoch
>>>>
>>>> On Sat, Jan 9, 2010 at 7:27 PM, Duncan Murdoch <murdoch at stats.uwo.ca>
>>>> wrote:
>>>>
>>>>>
>>>>> On 09/01/2010 6:31 PM, Gabor Grothendieck wrote:
>>>>>
>>>>>>
>>>>>> That doesn't explain why this returns character(o) even though we have
>>>>>> launched a console for it:
>>>>>>
>>>>>> system("cmd /c C:\\windows\\system32\\find /?", intern = TRUE)
>>>>>>
>>>>>
>>>>> I don't see any console launched.  R redirects stdin and stdout (and
>>>>> stderr,
>>>>> I think), and it appears that Windows doesn't open a console.  I do see a
>>>>> console flash by if I do
>>>>>
>>>>> system('cmd /c c:/WINDOWS/system32/find.exe /?', wait=FALSE,
>>>>> invisible=FALSE)
>>>>>
>>>>> but of course then we don't capture the output, so it's not very useful.
>>>>>  Looking at the source, the only case where we ask to create a console is
>>>>> the combination "wait=FALSE, invisible=FALSE", but there might be
>>>>> combinations of other options that make this a default.  The MS
>>>>> documentation says that a console will be created automatically for any
>>>>> console application, but that doesn't appear to be happening.
>>>>>
>>>>> So I guess you could get find.exe to work by calling it from a batch file
>>>>> with a "pause" at the end and using the wait=FALSE,invisible=FALSE
>>>>> options.
>>>>>
>>>>> The above observations are in Win XP SP3, not anything newer.
>>>>>
>>>>> Duncan Murdoch
>>>>>
>>>>>
>>>>>>
>>>>>> On Sat, Jan 9, 2010 at 5:24 PM, Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> On 07/01/2010 1:25 PM, Uwe Ligges wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Argh. I see it as well. Will dig a lit tomorrow.
>>>>>>>>
>>>>>>>
>>>>>>> I don't know exactly what's going on, but it looks as though it is
>>>>>>> something
>>>>>>> specific to the find.exe utility, e.g. maybe it is assuming that it's
>>>>>>> being
>>>>>>> run inside a console and reading CONIN$ or writing to CONOUT$ without
>>>>>>> checking whether they can be opened.  When you run it from Rterm, Rterm
>>>>>>> is
>>>>>>> in a console, which appears to be good enough.
>>>>>>>
>>>>>>> So it may be anyone who wants to use it will have to contact Microsoft
>>>>>>> to
>>>>>>> find out how...
>>>>>>>
>>>>>>> Duncan Murdoch
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Uwe
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 07.01.2010 12:25, Gabor Grothendieck wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> I get a problem with shell too:
>>>>>>>>>
>>>>>>>>> Under Rgui:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> R.version.string
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [1] "R version 2.10.1 Patched (2010-01-01 r50884)"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> system("C:\\windows\\system32\\find /?", intern = TRUE)
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> character(0)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> system("cmd /c C:\\windows\\system32\\find /?", intern = TRUE)
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> character(0)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> shell("C:\\windows\\system32\\find /?")
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Warning message:
>>>>>>>>> In shell("C:\\windows\\system32\\find /?") :
>>>>>>>>>  'C:\windows\system32\find /?' execution failed with error code 1
>>>>>>>>>
>>>>>>>>> They all work, i.e. they give the required help message, under Rterm
>>>>>>>>> and when I issue this from the Windows console it works:
>>>>>>>>> C:\windows\system32\find /?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2010/1/7 Uwe Ligges<ligges at statistik.tu-dortmund.de>:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 07.01.2010 02:04, Gabor Grothendieck wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> If you have C:\Rtools\bin on your PATH note that it contains a
>>>>>>>>>>> UNIX-like find utility that conflicts with the find utility in
>>>>>>>>>>> Windows.  If that is the problem then remove that from your PATH
>>>>>>>>>>> and
>>>>>>>>>>> then run the batch file.
>>>>>>>>>>>
>>>>>>>>>>> The batchfiles distribution at http://batchfiles.googlecode.com
>>>>>>>>>>>  has
>>>>>>>>>>> utilities (Rgui.bat, R.bat, Rtools.bat, etc.) that will
>>>>>>>>>>> automatically
>>>>>>>>>>> add C:\Rtools\bin to your path temporarily or only while R is
>>>>>>>>>>> running
>>>>>>>>>>> so that you can leave it off your PATH.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I guess it's the use of system() rather than shell() that causes the
>>>>>>>>>> problem. Under Windows, you have to use shell in order to start a
>>>>>>>>>> command
>>>>>>>>>> interpreter.
>>>>>>>>>>
>>>>>>>>>> Uwe Ligges
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Jan 6, 2010 at 6:51 PM, John Schexnayder<jschex at us.ibm.com>
>>>>>>>>>>>  wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> This is sort of a strange bug.  Not show stopping, but annoying.
>>>>>>>>>>>>  I
>>>>>>>>>>>> was
>>>>>>>>>>>> wondering if anyone else has noticed this and reported it before I
>>>>>>>>>>>> submit
>>>>>>>>>>>> a bug report.
>>>>>>>>>>>>
>>>>>>>>>>>> I noticed while running the RGui and attempting to debug one of my
>>>>>>>>>>>> scripts
>>>>>>>>>>>> that I encountered a Windows error informing me that "Find String
>>>>>>>>>>>> [grep]
>>>>>>>>>>>> Utility has encountered a problem and needs to close."  It is
>>>>>>>>>>>> being
>>>>>>>>>>>> generated by a call to a DOS batch file which contains a call to
>>>>>>>>>>>> Find.exe.
>>>>>>>>>>>>  It can be reproduced by simply typing  "System("find")" in RGui.
>>>>>>>>>>>>  What I
>>>>>>>>>>>> found strange is that I have been running this script daily
>>>>>>>>>>>> without
>>>>>>>>>>>> this
>>>>>>>>>>>> problem for months.  I now realize I never ran that portion of the
>>>>>>>>>>>> script
>>>>>>>>>>>> while in RGui.exe.  It has always run in batch mode which is done
>>>>>>>>>>>> by
>>>>>>>>>>>> Rterm.exe.
>>>>>>>>>>>>
>>>>>>>>>>>> I have tried this on three separate machines now all running
>>>>>>>>>>>> Windows
>>>>>>>>>>>> XP
>>>>>>>>>>>> SP3, with versions of R 2.8.1 and R 2.10.1  If executing
>>>>>>>>>>>> "System("find")
>>>>>>>>>>>> under RGui, an error window for the Find String Utility is
>>>>>>>>>>>> generated
>>>>>>>>>>>> and
>>>>>>>>>>>> the command is not exectuted.  If the same command is issued in
>>>>>>>>>>>> Rterm
>>>>>>>>>>>> the
>>>>>>>>>>>> expected "FIND: Parameter format not correct" message is properly
>>>>>>>>>>>> returned.
>>>>>>>>>>>>
>>>>>>>>>>>> It doesn't seem an important bug, but it could be the canary in
>>>>>>>>>>>> the
>>>>>>>>>>>> mine
>>>>>>>>>>>> for a larger problem somewhere down the road.
>>>>>>>>>>>>
>>>>>>>>>>>> Re,
>>>>>>>>>>>> John Schexnayder
>>>>>>>>>>>>
>>>>>>>>>>>> IBM Tape Manufacturing - Information Technology
>>>>>>>>>>>> San Jose, CA  95138
>>>>>>>>>>>> JSchex at us.ibm.com
>>>>>>>>>>>>
>>>>>>>>>>>>      [[alternative HTML version deleted]]
>>>>>>>>>>>>
>>>>>>>>>>>> ______________________________________________
>>>>>>>>>>>> R-help at r-project.org mailing list
>>>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>>>>> http://www.R-project.org/posting-guide.html
>>>>>>>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ______________________________________________
>>>>>>>>>>> R-help at r-project.org mailing list
>>>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>>>>>>> PLEASE do read the posting guide
>>>>>>>>>>> http://www.R-project.org/posting-guide.html
>>>>>>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>>>>>>>
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> R-help at r-project.org mailing list
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>>>> PLEASE do read the posting guide
>>>>>>>> http://www.R-project.org/posting-guide.html
>>>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>>>>
>>>>>
>>>>>
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>
>



More information about the R-help mailing list