The following code will open a folder browser dialog and allow you to recursively batch process multiple images using the DeepZoomTools.dll that is included when you download Deep Zoom Composer. I also added additional methods for creating a CSV of your directory structure so you can filter out your dzi files and export into a data source.
Note: This is part of the April 2009 version of Deep Zoom Composer.
Steps:
1. Create a Window Form Application in Visual Studio.
2. Make a reference to the DeepZoomTools.dll found in C:\Program Files\Microsoft Expression\Deep Zoom Composer.
3. Add the following code and call the GenerateDeepZoomImages method.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Microsoft.DeepZoomTools;
public void GenerateDeepZoomImages()
{
    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
    DialogResult result = folderBrowser.ShowDialog();
    if (result == DialogResult.OK)
    {
        List<string> extensionFilter = new List<string> { ".tiff", ".tif", ".jpg", ".bmp", ".png" };    //DeepZoom (April 2009) only supports these extensions
        List<FileSystemInfo> fileList = GetFileSystemInfo(folderBrowser.SelectedPath, false, true, true, extensionFilter);
        CollectionCreator collectionCreator = new CollectionCreator();
        ImageCreator imageCreator = new ImageCreator();
        List<Microsoft.DeepZoomTools.Image> images = new List<Microsoft.DeepZoomTools.Image>();
        foreach (FileInfo fsInfo in fileList)
        {
            string imageFileName = fsInfo.FullName;
            string imageFolderName = Path.GetDirectoryName(fsInfo.FullName);
            string destinationFolder = imageFolderName + "\\" + fsInfo.Name + "_dzdata";
            imageCreator.Create(fsInfo.FullName, destinationFolder);
            Microsoft.DeepZoomTools.Image img = new Microsoft.DeepZoomTools.Image(imageFileName);
            //You can manipulate this Image object before adding
            images.Add(img);
            collectionCreator.Create(images, destinationFolder);
        }
    }
}
public List<FileSystemInfo> GetFileSystemInfo(string directoryPath, bool includeFolders, bool includeFiles, bool recursive, List<string> extensionFilter)
{
    extensionFilter = (from e in extensionFilter select e.ToLower()).ToList<string>();
    List<FileSystemInfo> fileSystemList = new List<FileSystemInfo>();
    DirectoryInfo directory = new DirectoryInfo(directoryPath);
    if (recursive)
    {
        foreach (DirectoryInfo childDirectory in directory.GetDirectories())
        {
            fileSystemList.AddRange(GetFileSystemInfo(childDirectory.FullName, includeFolders, includeFiles, recursive, extensionFilter));
        }
    }
    if (includeFolders)
    {
        fileSystemList.Add(directory);
    }
    FileInfo[] files = directory.GetFiles("*.*");
    foreach (FileInfo file in files)
    {
        if (extensionFilter.Count != 0)
        {
            if (extensionFilter.Contains(file.Extension.ToLower()))
            {
                fileSystemList.Add(file);
            }
        }
        else
        {
            fileSystemList.Add(file);
        }
    }
    return fileSystemList;
}
public static string GetFileSystemCsv(List<FileSystemInfo> fileSystemList)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("Name,Full Name,Parent Folder,Creation Time,Last Access Time,Last Write Time,Length, Extension,Attributes\r\n");
    foreach (FileSystemInfo fileSystemItem in fileSystemList)
    {
        if (fileSystemItem.GetType() == typeof(FileInfo))
        {
            sb.Append(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}\r\n", fileSystemItem.Name, fileSystemItem.FullName, fileSystemItem.FullName.Replace(fileSystemItem.Name, ""), fileSystemItem.CreationTime, fileSystemItem.LastAccessTime, fileSystemItem.LastWriteTime, ((FileInfo)fileSystemItem).Length.ToString(), fileSystemItem.Extension, fileSystemItem.Attributes.ToString()));
        }
        else
        {
            sb.Append(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}\r\n", fileSystemItem.Name, fileSystemItem.FullName, fileSystemItem.FullName.Replace(fileSystemItem.Name, ""), fileSystemItem.CreationTime, fileSystemItem.LastAccessTime, fileSystemItem.LastWriteTime, "", "", fileSystemItem.Attributes.ToString()));
        }
    }
    return sb.ToString();
}
private void SaveCsvFile(string fileText)
{
    Stream myStream;
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "CSV Files (*.csv)*.csv";
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if ((myStream = saveFileDialog1.OpenFile()) != null)
        {
            StreamWriter wText = new StreamWriter(myStream);
            wText.Write(fileText);
            wText.Close();
        }
    }
}