Solved

Would like to an if statement to a batch script that will check to see if the script can connect to a computer if not skip the rest of the commands.

Posted on 2007-12-05
7
1,212 Views
Last Modified: 2008-03-07
Would like to an if statement to a batch script that will check to see if the script can connect to a computer if not skip the rest of the commands.

My script
pause
psexec @K9.txt net stop K9 >> C:\Utils\PSTools\PSExeclog.txt
 
@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

psexec @K9.txt K9nt remove -s >> C:\Utils\PSTools\PSExeclog.txt

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul


psexec @K9.txt sc config w32time start= auto >> C:\Utils\PSTools\PSExeclog.txt

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul


psexec @K9.txt net start w32time >> C:\Utils\PSTools\PSExeclog.txt

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

psexec @K9.txt sc config Messenger start= auto >> C:\Utils\PSTools\PSExeclog.txt

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

psexec @K9.txt net start Messenger >> C:\Utils\PSTools\PSExeclog.txt

pause

I would like to make something like this work but don't know how:

---------------------------
pause
psexec @K9.txt net stop K9 >> C:\Utils\PSTools\PSExeclog.txt
If the script can connect to the computer do:  
               @ping 127.0.0.1 -n 2 -w 1000 > nul
                @ping 127.0.0.1 -n %1% -w 1000> nul

                 psexec @K9.txt K9nt remove -s >> C:\Utils\PSTools\PSExeclog.txt

                @ping 127.0.0.1 -n 2 -w 1000 > nul
                @ping 127.0.0.1 -n %1% -w 1000> nul


                psexec @K9.txt sc config w32time start= auto >> C:\Utils\PSTools\PSExeclog.txt

                 @ping 127.0.0.1 -n 2 -w 1000 > nul
                 @ping 127.0.0.1 -n %1% -w 1000> nul


                 psexec @K9.txt net start w32time >> C:\Utils\PSTools\PSExeclog.txt

                 @ping 127.0.0.1 -n 2 -w 1000 > nul
                @ping 127.0.0.1 -n %1% -w 1000> nul

                 psexec @K9.txt sc config Messenger start= auto >> C:\Utils\PSTools\PSExeclog.txt

                 @ping 127.0.0.1 -n 2 -w 1000 > nul
                 @ping 127.0.0.1 -n %1% -w 1000> nul

                  psexec @K9.txt net start Messenger >> C:\Utils\PSTools\PSExeclog.txt
ELSE
                Exit
pause
--------------------------------------------------------



0
Comment
Question by:rorybrady
  • 4
  • 2
7 Comments
 
LVL 14

Expert Comment

by:canali
ID: 20416515
you don't need psexec for configuring and starting service...
Bye Gastone Canali
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: K9.txt is the file with the list of your computer
:: cfg_and_start_svc.cmd
:::: byBye Gastone Canali 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Batch Script Start
@Echo Off
SETLOCAL
pushd %~d0%~p0
set filename=%~n0
set logfile="C:\Utils\PSTools\_%filename%.txt"
:: create empty log files
type nul>%logfile%
 
IF NOT EXIST C:\K9.txt  Goto :_ERR
FOR %%R IN (C:\K9.txt ) Do IF %%~zR EQU 0 Goto :_ERR
 
FOR /F %%c IN ('Type K9.txt') Do (
    Echo Processing: %%c
      PING -n 2 -w 500 %%c|Find /I "TTL" >NUL
      IF NOT ErrorLevel 1 (
        rem if pc is alive do ....
        rem ??? psexec \\%c  remove -s        >> %logfile%
        sc  \\%%c config  w32time start= auto >> %logfile%
        sc  \\%%c start w32time               >> %logfile%
        sc  \\%%c config Messenger start= auto>>%logfile%
        sc  \\%c start Messenger              >> %logfile%
      )ELSE (Echo %%c: Not able to connect )
)      
 
Goto :_END
:_ERR
Echo " C:\K9.txt" file does not exist or file is empty!
:_END
:: Batch Script End

Open in new window

0
 

Author Comment

by:rorybrady
ID: 20416550
There are 2 reasons I am using psexec.

1. I can use it to read the names of computers from a text file.
2. It is easy to run commands on these computers remotly.
0
 
LVL 14

Expert Comment

by:canali
ID: 20417968
For checking if a pc  alive you need to read the computer list from try to ping it and then run psexec (you can't use in this case psexec and @listofcomputers but psexec \\computer ...):
substitute the lines 23-27 wirh your psexec command
 EX. psexec \\%%c net start w32time >> %logfile%

Bye Gas
0
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 

Author Comment

by:rorybrady
ID: 20421115
This is a great script canali, but I was hoping you could help me modify it. I am tring to put in some error checking but I get an incorrect syntax when I run the script. I am sure it is because I don't have my if/else statments applied correctly.

@Echo Off
SETLOCAL
set filename=%~n0
set logfile="C:\Utils\PSTools\_%PSExeclog%.txt"
:: create empty log files
type nul>%logfile%
 
IF NOT EXIST C:\Utils\PSTools\K9.txt  Goto :_ERR
      FOR %%R IN (C:\Utils\PSTools\K9.txt ) Do IF %%~zR EQU 0 Goto :_ERR
 
            FOR /F %%c IN ('Type K9.txt') Do (
                      Echo Processing: %%c
                        PING -n 2 -w 500 %%c|Find /I "TTL" >NUL
                        
                  IF NOT ErrorLevel 1 (
                        rem if pc is alive do .... >> C:\Utils\PSTools\PSExeclog.txt

                          psexec @K9.txt net stop K9 >> C:\Utils\PSTools\PSExeclog.txt
                        pause
                          IF ErrorLevel 2 (
                              pause
                              rem Service is not running, does not exist or firewall issue. >> C:\Utils\PSTools\PSExeclog.txt
                        )ELSE
                              
                              @ping 127.0.0.1 -n 2 -w 1000 > nul
                              @ping 127.0.0.1 -n %1% -w 1000> nul

                              psexec @K9.txt K9nt remove -s >> C:\Utils\PSTools\PSExeclog.txt            
                                IF ErrorLevel 2 (
                                    pause
                                    rem Problem removing K9 Service >> C:\Utils\PSTools\PSExeclog.txt
                              )ELSE(
                              
                                    @ping 127.0.0.1 -n 2 -w 1000 > nul
                                    @ping 127.0.0.1 -n %1% -w 1000> nul
            
                              
                                    psexec @K9.txt sc config w32time start= auto >> C:\Utils\PSTools\PSExeclog.txt
                                      IF ErrorLevel 2 (
                                          pause
                                          rem Problem changing w32time start option>> C:\Utils\PSTools\PSExeclog.txt
                                    )ELSE

                                    @ping 127.0.0.1 -n 2 -w 1000 > nul
                                    @ping 127.0.0.1 -n %1% -w 1000> nul


                                    psexec @K9.txt net start w32time >> C:\Utils\PSTools\PSExeclog.txt
                                      IF ErrorLevel 2 (
                                          pause
                                          rem Problem starting w32time Service >> C:\Utils\PSTools\PSExeclog.txt
                                    )ELSE

                                    @ping 127.0.0.1 -n 2 -w 1000 > nul
                                    @ping 127.0.0.1 -n %1% -w 1000> nul

                                    psexec @K9.txt sc config Messenger start= auto >> C:\Utils\PSTools\PSExeclog.txt
                                      IF ErrorLevel 2 (
                                          pause
                                          rem Problem changing Messenger start option >> C:\Utils\PSTools\PSExeclog.txt
                                    )ELSE

                                    @ping 127.0.0.1 -n 2 -w 1000 > nul
                                    @ping 127.0.0.1 -n %1% -w 1000> nul

                                    psexec @K9.txt net start Messenger >> C:\Utils\PSTools\PSExeclog.txt
                                      IF ErrorLevel 2 (
                                          pause
                                          rem Problem starting Messenger Service >> C:\Utils\PSTools\PSExeclog.txt
                                    )ELSE

                                    pause
                        )ELSE (Echo %%c: Can ping machine but not modify services >> C:\Utils\PSTools\PSExeclog.txt)
                        )ELSE (Echo %%c: Not able to connect >> C:\Utils\PSTools\PSExeclog.txt )
)      
 
Goto :_END
:_ERR
Echo " C:\Utils\PSTools\K9.txt" file does not exist or file is empty!
:_END
:: Batch Script End
0
 
LVL 14

Accepted Solution

by:
canali earned 500 total points
ID: 20424686

:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: K9.txt is the file with the list of your computer
:: cfg_and_start_svc.cmd
:::: byBye Gastone Canali 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Batch Script Start
@Echo Off
SETLOCAL
pushd %~d0%~p0
set filename=%~n0
set logfile="C:\_%filename%.txt" 2^>^&1
:: create empty log files
type nul>%logfile%
set sleep=@ping -n 2 127.0.0.1^>nul
IF NOT EXIST C:\K9.txt  Goto :_ERR
FOR %%R IN (C:\K9.txt ) Do IF %%~zR EQU 0 Goto :_ERR
 
FOR /F %%c IN ('Type c:\K9.txt') Do (
      Echo Processing: %%c
      PING -n 2 -w 500 %%c|Find /I "TTL" >NUL
      IF NOT ErrorLevel 1 (
        Echo Processing: %%c  >> %logfile%
        rem if pc is alive do ....
        rem remove k9 time service
        c:\pro\psexec \\%%c  -i -s k9nt.exe remove -s ||echo ERR removing K9 Service >> %logfile%
        %sleep%
        sc  \\%%c config  w32time start= auto|find /I "FAILED" && echo ERR changing w32time start option >>%logfile%
        %sleep%
        sc  \\%%c start w32time|find /I "FAILED" && echo ERR starting w32time >>%logfile%
        %sleep%
        sc  \\%%c config Messenger start= auto |find /I "FAILED" && echo ERR changing Messenger start option >>%logfile%
        %sleep%
        sc  \\%%c start Messenger|find /I "FAILED" && echo ERR starting messenger >>%logfile%   
        %sleep%
      ) ELSE ( 
               Echo %%c: Not able to connect
               Echo %%c: Not able to connect>> %logfile%
              )
)      
Goto :_END
:_ERR
Echo " C:\K9.txt" file does not exist or file is empty!
:_END
:: Batch Script End

Open in new window

0
 
LVL 14

Expert Comment

by:canali
ID: 20613468
I think the answer was closed with the last batch...
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The following is a collection of cases for strange behaviour when using advanced techniques in DOS batch files. You should have some basic experience in batch "programming", as I'm assuming some knowledge and not further explain the basics. For some…
If like me you are one who spends a lot of time working and scripting with cmd.exe, sometimes it is handy to be able to quickly view a calendar for a given month and year. This script will quickly do just that!  Save the code posted below to a .bat …
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

789 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question