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

Mark Bohlman mbohlman@tcicredit.com
Fri Sep 3 14:39:00 GMT 2004


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


--
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/



More information about the Cygwin mailing list