Solved

Dos FOR loop question

Posted on 2011-03-04
10
926 Views
Last Modified: 2012-06-21
Here is my batch file.

For /f %%a IN (‘R:\ /b *.mdb’) do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" %%a /compact


I am trying to run through the R drive and grab all the .mdb's and do compact from msaccess but when I run this through command prompt I get this error:

%%a was unexpected at this time

Any suggestions on how to get this For loop command to work properly.
0
Comment
Question by:goretailpro
  • 3
  • 2
  • 2
  • +2
10 Comments
 

Author Comment

by:goretailpro
ID: 35040589
0
 
LVL 95

Expert Comment

by:Lee W, MVP
ID: 35040599
you cut and paste, didn't you?  

:-)

You have:
For /f %%a IN (‘R:\ /b *.mdb’) do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" %%a /compact
try
For /f %%a IN ('R:\ /b *.mdb') do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" %%a /compact

(Note the TYPE of quote surrounding R:\ /b *.mdb)
0
 

Author Comment

by:goretailpro
ID: 35040619
I did but I still get the same message...
3-4-2011-4-40-03-PM.jpg
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
LVL 33

Expert Comment

by:knightEknight
ID: 35040622
I think he means:

  IN ('dir/s/b R:\*.mdb')
0
 
LVL 33

Expert Comment

by:knightEknight
ID: 35040630
... and if any of your .mdb files have spaces in the name, put quotes here:  "%%a" /compact
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 35040702
Oh and the obvious... if you are typing that at the command line use %a instead of %%a (which is for batch files).

Steve
0
 
LVL 26

Assisted Solution

by:farhankazi
farhankazi earned 250 total points
ID: 35040712
@goretailpro:
Are you executing above statement from command line? if yes then you need to remove one % sign from FOR statement.

FOR /F "delims=*" %a IN ('DIR /b /s R:\*.mdb') do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" "%a" /compact

in batch file, following should work:

FOR /F "delims=*" %%a IN ('DIR /b /s R:\*.mdb') do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" "%%a" /compact

Hope this helps!
Farhan
0
 
LVL 26

Expert Comment

by:farhankazi
ID: 35040728
Sorry Steve, didn't refresh the page :(
0
 

Author Comment

by:goretailpro
ID: 35056650
Is there a way to exclude specific MDB's?
0
 
LVL 43

Accepted Solution

by:
Steve Knight earned 250 total points
ID: 35056848
You could have a list of entries to exclude in a text file perhaps, e.g.

somefile.mdb
another.mdb
c:\someexcludedir

then use a find /v command as part of the dir command to exclude those lines, they would only need to be a partial match (but not wildcards), e.g. if you want to exclude a whole subdir worth then include that path in the file

@echo off
set exclude="r:\exclude.txt"
FOR /F "delims=*" %%a IN ('DIR /b /s R:\*.mdb ^|findstr /i /v /g:%exclude%') do call "C:\Program Files\Microsoft Office\Office14\msaccess.exe" "%%a" /compact

That says to take the dir listing of all MDB files in the R: drive and all subdirs then pass that to findstr to find all lines that do NOT match any of the search strings in the r:\exclude.txt file.



Steve
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying 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

Over the years I have built up my own little library of code snippets that I refer to when programming or writing a script.  Many of these have come from the web or adaptations from snippets I find on the Web.  Periodically I add to them when I come…
It’s been over a month into 2017, and there is already a sophisticated Gmail phishing email making it rounds. New techniques and tactics, have given hackers a way to authentically impersonate your contacts.How it Works The attack works by targeti…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.

839 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