Solved

How to delete *.dot files among *.dotm files with cmd script?

Posted on 2010-08-20
16
612 Views
Last Modified: 2012-05-10
I have a folder with .dot files and .dotm files.  For example I have blank.dot and blank.dotm files. I need to delete those .dot files because they are not used any more. But I noticed using DEL *.dot deletes also .dotm files. What is the right command to use?
0
Comment
Question by:SJARV
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 3
  • 2
  • +3
16 Comments
 
LVL 9

Expert Comment

by:Dan Arseneau
ID: 33485214
Are you sure?  I have 2 files x.abc and x.abcd.  I run del x.abc and only the one deletes.
0
 
LVL 1

Expert Comment

by:ekarls20
ID: 33485302
Dan, the problem is the wild card.

A workaround would be to first "move *.dotm" and then "del *.dot".
0
 
LVL 9

Expert Comment

by:Dan Arseneau
ID: 33485327
Sorry, I worded it wrong.  I ran del *.abc and only the one deletes.
0
Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

 
LVL 54

Expert Comment

by:Bill Prew
ID: 33485415
Well, this isn't pretty, but it will work:

for %A in (*.doc) do if "%~xA"==".doc" del "%A"

~bp
0
 
LVL 16

Expert Comment

by:t0t0
ID: 33488860
This command will do the trick quite nicely.

   for /f "tokens=*" %a in ('dir /a-d /b *.dot') do if /i "%~xa"==".dot" del "%a"
0
 
LVL 16

Expert Comment

by:t0t0
ID: 33488878
Here's a batch file version of the command above.

   ::============================================
   :: Delete just .DOT files
   ::============================================
   @echo off
   for /f "tokens=*" %%a in ('dir /a-d /b *.dot') do (
      if /i "%%~xa"==".dot" del "%a"
   )
   exit /b 0
0
 
LVL 16

Expert Comment

by:t0t0
ID: 33488882
prew, you got there seconds ahead of me.... Isn't your bed calling you?... :)
0
 
LVL 54

Expert Comment

by:Bill Prew
ID: 33488888
==> t0t0

Isn't that what I said?

Although I see I did use the wrong last character of the extension, thought we were working with word 2007 documents...

~bp
0
 
LVL 16

Expert Comment

by:t0t0
ID: 33489033
ah well, there you go then... obviously NOT what you said.

the author stated .DOT and .DOTM files - i'm just going along with what the author asked for.

BTW, I completely overlooked the simplicity of just 'FOR IN (filename)'....
0
 
LVL 54

Expert Comment

by:Bill Prew
ID: 33489053
Yes, I sometimes miss the small details when focusing on the "hard" part of these questions.  Need to get better about rereading the question after I write a solution, but before I submit it.

You'll be happy to know I'll be out for the evening shortly, make hay!

~bp
0
 
LVL 3

Expert Comment

by:Telxon
ID: 33497916
How about just "del *.do?"   ?

This should work even easier.   :-)
0
 
LVL 16

Expert Comment

by:t0t0
ID: 33498514
Telxon

Shockingly enoughm and I really can't understand the reasoning why, if you create 3 files as follows:

    file.ab
    file.abc
    file.abcd

And enter the following command:

    del *.ab?

All 3 files will be deleted.


DEL ignores the fact we want to delete ONLY those files with extension names 3 characters wide therefore, your 'DEL *.DO?' command will not work reliably.
0
 
LVL 16

Accepted Solution

by:
t0t0 earned 500 total points
ID: 33498552
As a command typed directly into a DOS box, this will work nicely:

   for %a in (*.dot) do if /i "%~xa"==".dot" del "%a"




The same command can be ran from within a batch file like this:

   @echo off
   for %%a in (*.dot) do if /i "%%~xa"==".dot" del "%%a"
0
 

Author Comment

by:SJARV
ID: 33498831
Thank you for all the answers. del *.do? will also delete .dotm files - so that does not work.

But those two suggestions with signatures "t0t0" and "billprew" will work when running through the cmd prompt. When I put this code to cmd-file and run it, nothing happens. The files to be removed are located under the user profile in All users\application data\xx path. I use CD "%ALLUSERSPROFILE\Application data\xx" command first to move to the correct folder and then use this for loop. CD works but this does not. I do not understand why? The idea is to run this scripf for multiple workstations.

Thanks again.
0
 

Author Closing Comment

by:SJARV
ID: 33499765
You can ignore my last comment. I am pretty sure I did not see this comment this morning...

I really need to run this code through cmd script and this %% thing works very well.
0
 
LVL 3

Expert Comment

by:Telxon
ID: 33503238
For what it's worth, I did try my suggestion and works as I described on a Win7 machine. Only .DOT files were deleted, not .DOTM files. Your mileage may vary on other OS's.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say 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

When you receive another warning that your shared drive is almost full and you have asked your users to clean out old files again and again, here is a single command that may help. This command will place all the files that have not been used rec…
This article is the result of a quest to better understand Task Scheduler 2.0 and all the newer objects available in vbscript in this version over  the limited options we had scripting in Task Scheduler 1.0.  As I started my journey of knowledge I f…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

752 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