For your stderr.bat file, it might also work to redirect echo to stderr. For example:
@echo off echo abc echo def >&2 >&2 echo ghi -- Edward Berner -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Hilderbrand, Doug Sent: Thursday, February 05, 2015 5:54 PM To: [email protected] Subject: RE: [NTSysADM] Dirty batch for up servers Here is a pair of short scripts I use for automating some tasks I do. It pings and then does an action only if the ping succeeds. And it properly fails on the "destination host unreachable" ping result. You use it by including a command on the same line. i.e.: ifpingsok.bat myserver echo something or ifpingsok myotherserver copy something somewhere or for /f %i in (filefullofservernames.txt) do ifpingsok %i RunSomeImportantCommand It has worked for me except for extremely complex commands. Oops, almost forgot to include stderr.bat. Maybe I need to rework this in PowerShell, but it works and I use it almost daily. :::::::::::::: :: ifpingsok.bat @echo off setlocal set pingsOKtemp=c:\temp\pingsOK.%random%.tmp if {%1}=={} exit /b 5 if {%2}=={} exit /b 5 ping -4 -n 2 %1 | findstr Reply > %pingsOKtemp% findstr bytes %pingsOKtemp% > nul set exitcode=%errorlevel% for /f "tokens=1,*" %%i in ('echo %*') do set stuff2do=%%j if not %exitcode%==0 call StdErr.bat "%1 doesn't ping" & goto :endfail %stuff2do% :endok del /q %pingsOKtemp% endlocal exit /b 0 :endfail del /q %pingsOKtemp% endlocal exit /b 1 :::::::::::::: :: stderr.bat @echo off setlocal if exist "%TEMP%\StdErr.vbs" goto out @echo dim err>"%TEMP%\StdErr.vbs" @echo Set objshell = CreateObject("WScript.Shell")>>"%TEMP%\StdErr.vbs" @echo Set objArgs = WScript.Arguments>>"%TEMP%\StdErr.vbs" @echo err=objArgs(0)>>"%TEMP%\StdErr.vbs" @echo WScript.StdErr.Writeline err>>"%TEMP%\StdErr.vbs" :out if {%1}=={} goto outNone cscript //nologo "%TEMP%\StdErr.vbs" %1 endlocal goto :EOF :outNone cscript //nologo "%TEMP%\StdErr.vbs" "No Parameter Provided." endlocal Doug Hilderbrand | Systems Administrator Sr., Information Technology | Crane Aerospace & Electronics From: [email protected] [mailto:[email protected]] On Behalf Of Micheal Espinola Jr Sent: Thursday, November 6, 2014 2:04 PM To: ntsysadm Subject: Re: [NTSysADM] Dirty batch for up servers As an example of what you can scrape, you could do the following within the parenthesis: FOR /F "tokens=6 delims== " %%I IN ('findstr /I /C:"Average = " %TEMP%\SpeedTest.txt') DO SET SpdTst=%%I This capture the average ping round-trip time, and would allow you to potentially flag latency problems, even if all the pings are successful. -- Espi On Thu, Nov 6, 2014 at 12:38 PM, David McSpadden <[email protected]> wrote: Thanks guys. This helps. From: [email protected] [mailto:[email protected]] On Behalf Of Micheal Espinola Jr Sent: Thursday, November 06, 2014 3:07 PM To: ntsysadm Subject: Re: [NTSysADM] Dirty batch for up servers In its simplest form: PING #.#.#.#>%TEMP%\SpeedTest.txt IF "%ERRORLEVEL%" NEQ "0" () Echoing to a text file gives you the opportunity to scrape for any verbose output if you need to. Within the parenthesis, you can do whatever you want based on a ping failure. -- Espi On Thu, Nov 6, 2014 at 8:13 AM, David McSpadden <[email protected]> wrote: I want to run a windows batch the just does a ping. If the ping returns good data do nothing but if the ping fails set an error code I can look for and address it outside the batch. Anyone have or can point me to a . b a t script that does this already?? Thanks This e-mail and any files transmitted with it are property of Indiana Members Credit Union, are confidential, and are intended solely for the use of the individual or entity to whom this e-mail is addressed. If you are not one of the named recipient(s) or otherwise have reason to believe that you have received this message in error, please notify the sender and delete this message immediately from your computer. Any other use, retention, dissemination, forwarding, printing, or copying of this email is strictly prohibited. Please consider the environment before printing this email. This e-mail and any files transmitted with it are property of Indiana Members Credit Union, are confidential, and are intended solely for the use of the individual or entity to whom this e-mail is addressed. If you are not one of the named recipient(s) or otherwise have reason to believe that you have received this message in error, please notify the sender and delete this message immediately from your computer. Any other use, retention, dissemination, forwarding, printing, or copying of this email is strictly prohibited. Please consider the environment before printing this email. -------------------------------------------------------------------------------- Connect with us on LinkedIn! http://www.linkedin.com/companies/crane-aerospace-electronics We value your opinion! How may we serve you better? Please click the survey link to tell us how we are doing: http://www.craneae.com/ContactUs/VoiceofCustomer.aspx Your feedback is of the utmost importance to us. Thank you for your time. -------------------------------------------------------------------------------- Crane Aerospace & Electronics Confidentiality Statement: The information contained in this email message may be privileged and is confidential information intended only for the use of the recipient, or any employee or agent responsible to deliver it to the intended recipient. Any unauthorized use, distribution or copying of this information is strictly prohibited and may be unlawful. If you have received this communication in error, please notify the sender immediately and destroy the original message and all attachments from your electronic files. --------------------------------------------------------------------------------

