View Full Version : CMD defrag help


aaron
09-15-2005, 08:13 PM
I am trying to write a batch file that will run the defrag -a -v command for
a list of machines so I can determine which machines need defragged. I can't
seem to get it to go past one line. How do I make the file continue on to
the next line? I am doing this remote through ps tools psexec.
I would like to capture the ouput of the cmd window to a text file for easy
search and logging. All machines are Server 2003.

Ex: of what I would like for analysis

psexec \\server1 defrag -a -v c:
psexec \\server1 defrag -a -v d:
psexec \\server2 defrage -a -v c:
psexec \\server3 defrag -a -v c:
etc..........

Then
psexec \\server1 defrag c:
psexec \\server1 defrag d:
psexec \\server2 defrage c:
psexec \\server3 defrag c:
etc..........
TIA,
--
aaron
A+,NET+,MCSE 2K/2K3,CNA,CCNA

Jerold Schulman
09-16-2005, 03:38 PM
On Thu, 15 Sep 2005 14:13:14 -0500, "aaron" <aaron@fake.net> wrote:

>I am trying to write a batch file that will run the defrag -a -v command for
>a list of machines so I can determine which machines need defragged. I can't
>seem to get it to go past one line. How do I make the file continue on to
>the next line? I am doing this remote through ps tools psexec.
>I would like to capture the ouput of the cmd window to a text file for easy
>search and logging. All machines are Server 2003.
>
>Ex: of what I would like for analysis
>
>psexec \\server1 defrag -a -v c:
>psexec \\server1 defrag -a -v d:
>psexec \\server2 defrage -a -v c:
>psexec \\server3 defrag -a -v c:
>etc..........
>
>Then
>psexec \\server1 defrag c:
>psexec \\server1 defrag d:
>psexec \\server2 defrage c:
>psexec \\server3 defrag c:
>etc..........
>TIA,


Create the follow dfrg.bat file in your path.

@echo Off
if {%2}=={} @echo Syntax dfrg Server Drive&goto :EOF
setlocal
set comp=%1
set drv=%2
set OK=Y
for /f "Tokens=*" %%a in ('psexec %comp% defrag -a -v %drv%^|find "You do not need to defragment this volume."') do (
set OK=N
)
if "%OK%" EQU "Y" psexec %comp% defrag %drv%
endlocal

Then

call dfrg \\server1 c:
call dfrg \\server1 d:
call dfrg \\server2 C:
call dfrg \\server3 C:
etc.


Jerold Schulman
Windows Server MVP
JSI, Inc.
http://www.jsiinc.com
http://www.jsifaq.com