April 25, 2007 02:25 PM

Automate the Windows 2003 Defragmenter Without Paying Extra

Rating: (0)
Windows IT Pro
InstantDoc ID #95487

Defragmentation is a great way to keep workstations and servers running at their best performance. Windows Server 2003 comes with a defragmenter: dfrgntfs.exe. However, you can't automate this defragmenter unless you purchase a program such as Diskeeper. I didn't have money for such a program in my budget, so I created and scheduled a batch file named Defrag.bat.

As Listing 1 shows, Defrag.bat is a simple program. It uses the defragmenter's command-line interface (defrag.exe) to run the defragmenter against each drive. However, I wasn't happy with Defrag.bat for two reasons. First, I had to let the batch file run while being left logged on with my administrator ID. Although I locked the screen for security reasons, I didn't want to leave myself logged on all the time. Second, I wanted more automation.

So, I did some digging around and found a means to automate the procedure. I found that I could use the Windows scheduler but in a different way that I didn't know was possible: I could use the AT command with a batch file.

I created a new batch file, Defrg. bat, which Listing 2 shows. Like Defrag.bat, Defrg.bat runs defrag.exe. However, Defrg.bat has a few more features than Defrag.bat. I included code that documents when the defragmenter starts and ends in a log file. I also added code that ports the defragmenter's screen output to the same log file (with some titles in between) to record which drives are being defragmented. That way, I can easily check to see whether the defragmentation operation ran and whether any errors occurred.

To use the new script, I log on to the server with my administrator ID, open a command-shell window, and run command

at 08:00pm /every:M,T,W,Th,F
  f:\Defrg.bat 

(Although this command appears on several lines here, you would enter it on one line in the command-shell window.) This command creates a new scheduled item in Scheduled Tasks that runs Defrg.bat every weeknight at 8 p.m. (which is before our backup runs).

With this new batch file, I don't need to be logged on for it to run. Because Defrg.bat is running as a system process, the defragmentation operation is performed in the background (i.e., no window comes up), but Task Manager will show that defrag.exe and dfrgntfs.exe are running. After Defrg.bat finishes, the scheduler will show 0x0 for a successful execution. However, I always check the log file to make sure no problems were encountered.

To use Defrg.bat, you simply need to replace f:\defrag.log in the code at callout A in Listing 2 with the pathname to your log file. The AT command and batch file work on Windows Server 2003, Windows XP Professional, and Windows XP Home Edition. I recommend that you make the batch file a read-only, hidden file. That way, no one can edit it so that it damages your computers when the scheduled batch runs.
—Daniel L. Gillard

See Associated Figure

ARTICLE TOOLS

Add a Comment

All the very best to everyone for christmas and a good start to the new year.

lm1402 12/16/2008 9:34:26 PM


While I tend to agree with wtb5's comments, I found the article most useful and a great tip for those who DON'T have huge budgets for Server defraggers. More tips like this will be most welcome, thanks.

scoop1970 7/19/2007 5:59:22 PM


I find the article well explain and very usefull.

carlosgarcia 7/19/2007 10:37:54 AM


Well Bill, while your script may sound good it is never the less not accessible unless you have a subscription to yet another one of Penton's publications.

In their zeal to make money all they have done in the past few years is encourage more subscribers to cancel. Lets see the business plan now is to have smaller publications, put the good content on the web (thus defeating the purpose of a magazine) and having one subscription for every conceivable subject. Oh ya I forgot, write articles that only pertain to IT shops with 10,000 computers and multi-million dollar budgets.

In this case the web is going to kill traditional publications because they forgot who their audience is and what they want.

wtb5 5/28/2007 4:14:00 PM


My article "Extending Windows XP's Disk Defragmenter" (November 2004, InstantDoc #43924) provides a VBScript script called XDefrag.vbs that works on Windows XP and later. XDefrag.vbs provides defrag timing and event logging. Also, unlike this shell script, it can detect and defragment all local hard drives, so you don't have to edit it if your local drive letters are different.

HTH,

Bill

AbqBill 4/30/2007 9:22:58 AM


You must log on before posting a comment.

Are you a new visitor? Register Here

advertisement

advertisement

GOOGLE LINKS
SPONSORED LINKS
FEATURED LINKS

eBooks

Playbook for a Virtualized Datacenter | During challenging times, optimizing the IT infrastructure becomes imperative. Many organizations are looking to extend their virtualization efforts to encompass the entire datacenter. Get a step-through of your technology options and more.

White Papers

As the advances in USB devices have made them invaluable to most business users’, they have also exposed organizations to enormous risks. Learn how to easily enforce device/port control and data encryption policies without requiring new infrastructure and additional admin overhead.

WEB SEMINARS

Is Flexible Lockdown Possible? Join Darren Mar-Elia for this free web webinar exploring the various methods you should consider to protect and control your desktops while also understanding the impact on the end user community.
View Seminar On-Demand.

eLearning Series

Windows IT Pro brings the experts direct to you to share their real-world perspective, experience, and expertise. During each event, three sessions stream in real time, allowing you to learn, to ask questions, and to get solutions.
Upcoming event: SQL Server Consolidation

Subscribe to Windows IT Pro!

Windows is a trademark of the Microsoft group of companies. Windows IT Pro is used by Penton Media Inc. under license from owner.