Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com From: Mark Bohlman Subject: Re: Problem executing a .bat script in a directory with spaces using bash Date: Fri, 03 Sep 2004 15:41:17 -0400 Lines: 76 Message-ID: References: <5c8adab704090207557a3a359a AT mail DOT gmail DOT com> <4137566C DOT 7070203 AT sbcglobal DOT net> <5c8adab704090210405ea696e4 AT mail DOT gmail DOT com> <413760BD DOT 2080504 AT sbcglobal DOT net> <5c8adab70409021123291886c7 AT mail DOT gmail DOT com> <41376CD2 DOT 9090102 AT comcast DOT net> <41376D75 DOT 1060806 AT comcast DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet AT sea DOT gmane DOT org X-Gmane-NNTP-Posting-Host: exchange.tcicredit.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040803 In-Reply-To: X-Enigmail-Version: 0.85.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime X-IsSubscribed: yes Igor Pechtchanski wrote: > 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 AT CHCOBB-054009 /c/Documents and Settings 09:45:46 >>>>>>511$ cat test.bat >>>>>>echo %1 >>>>>> >>>>>>chcobb AT 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). . >>>>> 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 Of course you are right on the stdin side. My mistake. And I think it's time i move back to Unix systems exclusively as the behavior is "as expected" (used loosely) under cmd.exe. -- 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/