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]

stderr issues when running bat scripts


Although this appears on the surface to be a windows issue I am bringing this to the cygwin group
for two reasons.
1 - It only fails when I run it from a bash shell.
2 - It recently started failing.  I re-installed an older version of the cygwin package and the
problem goes away.


Version that failed:
Cygwin 1.5.6-1

Tested working version:
Cygwin 1.5.5-1

OS
Windows 2000 Professional 
5.0.2195 Service Pack 4 Build 2195

Here are two scripts for a test case.  The bat script calls the cscript in a for loop.  The for
loop catches the last line from stdout and puts it in the variable out.  The cscript simply puts
the text "STDOUT" to stdout and "STDERR" to stderr.

======Start tst.bat
rem echo "" 1>&2
echo "********************************"
set CMD=cscript /nologo tst.wsf
FOR /F "delims=#" %%A IN ('%CMD%') DO set OUT=%%A
echo %OUT%
======End tst.bat
======Start tst.wsf
<package>
	<job id="test">
		<script language="JScript">
			WScript.stderr.writeLine( "STDERR" );
			WScript.stdout.writeLine( "STDOUT" );
		</script>
	</job>
</package>
======End tst.wsf

======Start output
m:\class\cmd>rem echo "" 1>&2

m:\class\cmd>echo "********************************"
"********************************"

m:\class\cmd>set CMD=cscript /nologo tst.wsf

m:\class\cmd>FOR /F "delims=#" %A IN ('cscript /nologo tst.wsf') DO set OUT=%A

m:\class\cmd>set OUT=CScript Error: Execution of the Windows Script Host failed.
 (Unspecified error

m:\class\cmd>set OUT=)

m:\class\cmd>echo )
=========End Output

There are multiple things that I can do to get the scripts to run.
1) Uncomment the first echo line.  This line redirects a return to stderr.
2) Don't ever send to stderr in the cscript
3) Redirect either stdout or stderr to a file when running tst.bat

Another interesting test case that I will describe.  Adding a line with "%CMD%" before and after
the for loop causes the cscript to be called directly.  In this case the first call succeeds.  The
for loop fails and the next call to cscript fails.

I probably shouldn't do this, since I know so little about the inner workings, but here is my
musings. It would seem that the for loop causes special problems.  Possibly because it is doing a
form of redirection, stdout to the set commands and stderr should go to the screen.  Although this
causes problems for future calls to cscript I don't know why.  It must be that adding the echo to
stderr at the first causes the plumbing for stderr to be setup properly and all future commands
succeed.  There is no need to respond to this paragraph.  I wrote it just to help get the thought
process going if it is needed.

Clint

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!
http://webhosting.yahoo.com/ps/sb/

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