Tried that, and it didn't echo the delete command, it just sat there a
second or two after the last 'press any key' and then closed the command
prompt window. so I thought i'd try replacing the %Target%, etc in the
script line, with the actually values, and tried to run it direct in the
command prompt (which I don't know wether you can or can't), and I got
the response..
%%a was unexpected at this time.
I'm just going to copy the files from the server over to a local drive
and see it is works on that, maybe it is an issue with working from a
network drive?
The trick here is to approach the problem one step at a time. Run this
batch file this time:
@echo off
set Target=\\Server\Server F Drive\Need to Sort
set ext=.xls .doc
echo Checking the target folder xxx%Target%yyy
pause
dir /b /s /a-d "%Target%"
pause
for /F "delims=" %%a in ('dir /b /s /a-d "%Target%" ^| findstr /v /i
"%ext%"') do echo del "%%a" & pause
The program won't attempt to delete any files but it will echo the full
"delete" command to the screen, then pause. Now do this:
1. Press Ctrl+C to stop the batch file.
2. Examine the command carefully. Is it correct? If not, what's wrong?
3. Retype the command manually, letter by letter. Does it work? If not,
why not?
It correctly displayed the directory in the command window, but failed
to delete all 'other' files.
Fine. Now run your script like so:
@echo off
set Target=\\Server\Server F Drive\Need to Sort
set ext=.xls .doc
echo Checking the target folder xxx%Target%yyy
pause
dir /b /s /a-d "%Target%"
pause
for /F "delims=" %%a in ('dir /b /s /a-d "%Target%" ^| findstr /v /i
"%ext%"') do del "%%a"
The script will do a basic "dir" command on your target. Nothing
flash, nothing fancy. It will then pause. Does it generate the
expected output? If no then your folder name \\Server\Server F
Drive\Need to Sort is incorrect. Perhaps it has an invisible trailing
space.
@echo off
set Target=\\Server\Server F Drive\Need to Sort
set ext=.xls .doc
echo %Target%
echo %ext%
for /F "delims=" %%a in ('dir /b /s /a-d "%Target%" ^| findstr /v /i
"%ext%"') do del "%%a"
Like I said, I added in echo's for the command prompt.
Let's have a look at your version of the script!
I think I might be doing something wrong, I see the CMD window pop
up, but it is too quick, and the files are still there....
So I opened up Command Prompt and ran it from there, and I got
"File Not Found", I'm thinking it is something to do with working
on a Network Drive.
I added in echo %Target% and echo %ext% just to see whether it was
only taking part of the folder because of the spaces, and it was
outputing the full foldername??
Will this work on either network drives, or drives that have been
mapped to a letter... also if the folder name has spaces in?
Sorry to be a pain...
Regards
Paul.
Dear All,
I'm looking for a way using a DOS batch file to take a folder
and search everything within it, and delete every file except
files with a .xls or a .doc extension, also work recursively
within the folder, so if any subfolders are found it will deal
with them too.
Is it possible, I'm usually the end person who receives files
from work and all I need is the .xls and .doc files, nothing
else...
Is this possible... Ideally, I would like to right click on the
folder and use the 'SendTo' option and have the shortcut to the
batch file in there..
I've tried looking around Google (etc) for 3rd party software,
but nothing has jumped out at me (maybe I'm putting the wrong
search terms in)
Hope someone can help me with this matter as I'm no good using
DOS...
Thanks in advance.
Regards
Paul.
Unfortunately DOS cannot do this sort of thing. But then DOS is a
legacy operating system introduced some 30 years ago that is only
rarely used these days. However, you can easily perform the task
with a few Command Console commands under Windows XP. Here is a
batch file solution for you:
@echo off
set Target=D:\My Documents
set ext=.xls .doc
for /F "delims=" %%a in ('dir /b /s /a-d "%Target%" ^| findstr /v
/i "%ext%"') do echo del "%%a"
Do not retype the file - use copy & paste instead. Note that the
fourth line is a long line. It starts with [for] and ends with
[del "%%a"].
You must adjust lines 2 and 3 to suit your specific requirements.
To activate the batch file, remove the word "echo" in line 4.