This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem executing a .bat script in a directory with spaces using bash


On Fri, 3 Sep 2004, Mark Bohlman wrote:

> Igor Pechtchanski wrote:
> > On Fri, 3 Sep 2004, Mark Bohlman wrote:
> >
> > > Igor Pechtchanski wrote:
> > >
> > > > On Fri, 3 Sep 2004, Christopher Cobb wrote:
> > > >
> > > > > I get different results than you do.  It seems to work as expected:
> > > > >
> > > > > chcobb@CHCOBB-054009 /c/Documents and Settings 09:45:46
> > > > > 511$ cat test.bat
> > > > > echo %1
> > > > >
> > > > > chcobb@CHCOBB-054009 /c/Documents and Settings 09:45:48
> > > > > 511$ ./test.bat
> > > > >
> > > > > C:\Documents and Settings>echo
> > > > > ECHO is on.
> > > >
> > > > I believe you're missing the point.  Try
> > > >
> > > > ../test.bat "hello world"
> > > >
> > > > and you'll get the error.
> > > >
> > > > I've come across this when writing a pure Windows loader for
> > > > another program.  The above is actually an idiosyncrasy of the way
> > > > spawn() works in Cygwin (and, incidentally, in Windows' own
> > > > MSVCRT) -- it calls CreateProcess, which expects all arguments
> > > > combined into one command string (which, in turn, is later parsed
> > > > for separate arguments - yes, retarded, I know).  The fact is
> > > > that, if any argument contains spaces, it has to be quoted before
> > > > CreateProcess() is invoked.  Cygwin apparently doesn't do this
> > > > properly to the first argument, so the above breaks. See
> > > > spawn_guts() in winsup/cygwin/spawn.cc (warning: a 590!-line
> > > > function). <http://cygwin.com/acronyms/#PTC>.
> > > > 	Igor
> > >
> > > You get the same "odd evaluation behavior" when doing
> > > echo "Hello World" | ./test.bat
> > > (in any directory).
> > > -- Mark
> >
> > Actually, I don't.  Did you, by chance, mean "echo ...|xargs ./test.bat"?
> > Even so, you should probably be a bit more specific about the "odd
> > evaluation behavior" that you're observing.
> > 	Igor
>
> Hmmm.  I'm seeing the same results as you show above with a quoted "Hello
> World" parameter to the ./test.bat.
>
> Then in doing the echo, without the xargs, results in the same
> "non-evaluation" (what i consider to be 'odd') for parameter %1 within the
> test.bat file.
> -- Mark

Well, piping the output of echo to test.bat's stdin is *not* the same as
passing the string as a parameter.  In the former case, test.bat is called
with no arguments, so %1 evaluates to nothing.  IOW, the behavior you're
seeing is expected.
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Happiness lies in being privileged to work hard for long hours in doing
whatever you think is worth doing."  -- Dr. Jubal Harshaw

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]