Cooking with DOS
The Windows command line scares most people but if you want to automate stuff then command line scripts can be your best friend. In this series of posts I’ll be taking you through many of the processes involved with digitisation and looking at how they can be performed with freely available utilities.Before we get into our first scripts you might want to go and get the tools that we’ll be using if you don’t already have them…
Batch files are nothing more than plain text files with a file extension of “.bat” instead of “.txt”. They are essentially a list of instructions that tell your computer to do stuff, saving you the effort of typing each command into a command prompt window.
I won’t be teaching you how to write command line batch files from scratch. Instead I’ll be using some of the scripts that I already use and explain their usage so that you can modify them for your own purposes. The scripts will be presented as code. Comments are included using lines starting with “REM”. Optional bits for input and output files will be italicised. e.g.
REM This is a comment "c:\tools\tool_A.exe" -a -b "InputFile" "OutputFile" REM You can remove comments to speed up operation
Batch file categories
There are a number of ways that you can run a script in Windows and which one you use will depend on what your are trying to achieve and how much automation you want.
Edit and Run
BAT files are just plain text files with a file extension of “.bat” so you can edit them in any text editor. Simply edit them first and then double click on them to run. This is OK for testing but it’s not a very productive way to work… unless of course you get a database or spreadsheet to do all of the work creating the batch file.
Drag and drop
Dragging and dropping a file (or folder) onto a batch file is the equivalent of running the batch file from the command line with the name of the file afterwards. eg.
The name of the file is passed to the batch file as a variable, which has the advantage of being able to reuse parts of the file name in the script.
Using the “Send to” menu to send a file or folder to a batch file is effectively the same as using drag and drop with the added advantage of not having to drag the file between windows. All you have to do is right click on a file and find your script in the “Send to” submenu that pops up. Use it sparingly though, or you menu will become bloated and difficult to use. Any script categorised as drag and drop can be used in this way as well.
So let’s start of small with a script that I do have in my “Send to” menu… reading metadata from a file. It’s pretty hard to convince people to embed metadata in files when so much of it is often hidden away. This simple script reads all of the available metadata in a file and displays the result in your text editor.
Category: Drag and drop (file)
"c:\tools\EXIFTool\EXIFTool.exe" -s -a -g -u %1 > "c:\temp\metadata.txt" "c:\temp\metadata.txt"
Breakdown: This script runs EXIFTool.exe to read the metadata from the file dragged onto it (%1) including any unidentified tags (-u) and duplicate tags (-a), displaying short tag names (-s) and grouping the output by tag groups (-g), writing the results to a text file (> c:\temp\metadata.txt). This text file is then opened so that you can see the result. I use a text file rather than the pause option for EXIFTool because it’s easier to copy text from the metadata if required.
My next post in Cooking with DOS will look at both reading and writing metadata with EXIFTool.
If you’re looking to learn more about writing CMD scripts, here are some of the reference material that I commonly refer to: