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,220 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
How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

 

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

Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

Question has a verified solution.

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

TOMORROW TOMORROW.BAT is inspired by a question I get asked over and over again; that is, "How can I use batch file commands to obtain tomorrow's date?" The crux of this batch file revolves around the XCOPY command - a technique I discovered w…
AutoHotkey is an excellent, free, open source programming/scripting language for Windows. It started out as a keyboard/mouse macros product, but has expanded into a robust language. This article provides an introduction to it, with links to addition…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

749 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