Friday, October 9, 2009

MSDOS iterating filenames in a file

In an earlier post I covered finding the writable files in a directory, which is something you often need to do when messing around with source control. For example, if there's a writable file in your source folder that isn't checked out, then you know you need to add it before checking in. In fact I have a tool that compares my changelist with the list of writable files, and lets me know if I'm about to break the build when I check in.

Anyway I digress. Once you have found the writable files using:

dir source_folder /a-r-d /s /b > files.txt

then you may want to run some operation on them; for example make them read only.

Here's how to do that with the windows for command (see here for documentation)

for /F %i in (files.txt) do attrib -R %i

The for command with the /F option can iterate through a file full of filenames, which is what we generated with the first command, and run the operation after the do instruction.

It's actually quite powerful; you can specify comment markers, delimiters, and choose which of a number of columns you want to make into variables.

No comments: