Go Premium for a chance to win a PS4. Enter to Win

x
?
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
Medium Priority
?
1,242 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
6 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
Veeam Task Manager for Hyper-V

Task Manager for Hyper-V provides critical information that allows you to monitor Hyper-V performance by displaying real-time views of CPU and memory at the individual VM-level, so you can quickly identify which VMs are using host resources.

 

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

Configuration Guide and Best Practices

Read the guide to learn how to orchestrate Data ONTAP, create application-consistent backups and enable fast recovery from NetApp storage snapshots. Version 9.5 also contains performance and scalability enhancements to meet the needs of the largest enterprise environments.

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…
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses

876 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