Re: Need Help with a DOS script (if possible)
- From: "Pegasus \(MVP\)" <I.can@xxxxxxxxxx>
- Date: Thu, 6 Nov 2008 10:13:42 +0100
It seems this particular train got off the rails from the very start. You
were meant to run the batch file with the "echo" command in place in the
last line so that you could see for yourself if it was going deleted the
right files. It never did but you removed the "echo" command regardless.
This is dangerous!
There is no basis at all for your suspicion that network shares have
anything to do with your problem. Let's instead go back to even more basic
stuff. Try this:
1. Open a Command Prompt.
2. Type these commands, one at a time, and stop when you get a problem.
set Target=\\Server\Server F Drive\Need to Sort{Enter}
set ext=.doc .xls{Enter}
dir "%Target%"{Enter}
dir /b /s /a-d "%Target%"{Enter}
dir /b /s /a-d "%Target%" | findstr /v /i ".doc .xls"{Enter}
dir /b /s /a-d "%Target%" | findstr /v /i "%ext%"{Enter}
How far did you get?
"Kardon Coupé" <prefer.to@xxxxxxxxxxxxxxxxx> wrote in message
news:%23s8P6u%23PJHA.4084@xxxxxxxxxxxxxxxxxxxxxxx
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?
"Pegasus (MVP)" <I.can@xxxxxxxxxx> wrote in message
news:%23Kosho9PJHA.1448@xxxxxxxxxxxxxxxxxxxxxxx
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?
"Kardon Coupé" <prefer.to@xxxxxxxxxxxxxxxxx> wrote in message
news:uxgKaW7PJHA.1164@xxxxxxxxxxxxxxxxxxxxxxx
It correctly displayed the directory in the command window, but failed
to delete all 'other' files.
"Pegasus (MVP)" <I.can@xxxxxxxxxx> wrote in message
news:umh1ge5PJHA.3884@xxxxxxxxxxxxxxxxxxxxxxx
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.
"Kardon Coupé" <prefer.to@xxxxxxxxxxxxxxxxx> wrote in message
news:ORVUm84PJHA.1168@xxxxxxxxxxxxxxxxxxxxxxx
@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.
"Pegasus (MVP)" <I.can@xxxxxxxxxx> wrote in message
news:eW3lKFzPJHA.3884@xxxxxxxxxxxxxxxxxxxxxxx
Let's have a look at your version of the script!
"Kardon Coupé" <prefer.to@xxxxxxxxxxxxxxxxx> wrote in message
news:e7y7ZBzPJHA.420@xxxxxxxxxxxxxxxxxxxxxxx
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.
"Pegasus (MVP)" <I.can@xxxxxxxxxx> wrote in message
news:eKPjqjyPJHA.5076@xxxxxxxxxxxxxxxxxxxxxxx
"Kardon Coupé" <prefer.to@xxxxxxxxxxxxxxxxx> wrote in message
news:e6cANByPJHA.4504@xxxxxxxxxxxxxxxxxxxxxxx
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.
.
- Follow-Ups:
- Re: Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Re: Need Help with a DOS script (if possible)
- References:
- Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Re: Need Help with a DOS script (if possible)
- From: Pegasus \(MVP\)
- Re: Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Re: Need Help with a DOS script (if possible)
- From: Pegasus \(MVP\)
- Re: Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Re: Need Help with a DOS script (if possible)
- From: Pegasus \(MVP\)
- Re: Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Re: Need Help with a DOS script (if possible)
- From: Pegasus \(MVP\)
- Re: Need Help with a DOS script (if possible)
- From: Kardon Coupé
- Need Help with a DOS script (if possible)
- Prev by Date: Re: newsgroup message behavior
- Next by Date: Re: Need Help with a DOS script (if possible)
- Previous by thread: Re: Need Help with a DOS script (if possible)
- Next by thread: Re: Need Help with a DOS script (if possible)
- Index(es):