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 10:27:38 -0400 Lines: 41 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, 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 -- 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/