DA v2026.10.13 · da.gamenightbymike.com · 2026-10-14
DA User Guide
DA (short for Digital Archive) puts your photos and scanned documents in order. You copy them into one folder, and DA:
- sets exact duplicates aside, so you keep one copy of each photo,
- works out when each photo was taken, and renames it by that date
(
photo_19980704_101500_ab12.jpgwas taken on 4 July 1998 at 10:15:00), - files it in a folder for its year and month (
photos\organized\1998\1998-07\).
DA never deletes anything. It asks before it moves anything, and it keeps a record of every change, so every step can be checked and most can be undone.
DA runs on Windows 10 and 11.
Contents
- Words you'll see
- Getting started
- The menu
- Common workflows
- Less common workflows
- If something goes wrong
- Reference
Words you'll see
| Word | What it means |
|---|---|
| Archive | A folder DA looks after, for example D:\jane-archive-199x. You can have as many as you like, for example one for each person and each decade. |
| Intake | The folder inside an archive where you put new photos and documents: intake\. DA takes them from here. |
| Organized | Where DA files them: photos\organized\ and documents\organized\, one folder per year and month. |
| Duplicate | An exact copy of a photo, byte for byte. DA keeps one and moves the others to _duplicates-holding\. |
| Sidecar | A small note DA keeps next to each file, named like the file plus .meta.json. It holds the date DA found, a fingerprint of the file, and any tags. Leave sidecars where they are. |
| Terminal | A window where you type commands. Windows calls it PowerShell or Terminal. DA's menu runs in one. |
| Command | Something you type in the terminal, like da status, then press Enter. |
Getting started
1. Get DA
- Download DA.exe (the latest version), or get the file from whoever set DA up for you (for example on a USB stick).
- Your browser may ask whether to keep the file. Choose Keep.
2. Install it (once per computer)
- Open File Explorer and go to the folder with
DA.exe(usually Downloads). - Click in the address bar at the top of the window, type
powershell, and press Enter. A terminal window opens in that folder. - Type this and press Enter:
powershell .\DA.exe install - If Windows shows "Windows protected your PC", click More info, then Run anyway.
- Close the terminal window. From now on,
daworks in any new terminal window.
DA is now at C:\Scripts\DA\DA.exe. To update DA later, download the new DA.exe and do these
steps again; your archives aren't touched.
3. Create your first archive (once per archive)
- Open a new terminal: press the Windows key, type
terminal, press Enter. - Type this (with your own drive, name and years) and press Enter:
powershell da setup D:\jane-archive-199x --years 1990-1999
What happens depends on the folder:
- A new folder: DA creates it, with everything inside it that an archive needs.
- A folder you've already been copying photos into: DA lists what's there and asks
"Make it an archive and move these N items into intake\?". Type y. Everything moves into
intake\with its names unchanged, and the move is written down so it can be undone. - A folder that's already an archive: DA asks "Use the existing archive?", keeps its settings, and adds anything missing.
--years 1990-1999 is optional. With it, a photo taken in another decade (say 2005) is left in
intake\ and listed for you, so you can move it to the right archive (see
da split).
Your archive now looks like this:
D:\jane-archive-199x\
Open DA.cmd <- double-click this to open DA in this archive
da-archive.yaml <- this archive's settings
intake\
photos\ <- put photos here (any subfolders, any names)
docs\ <- documents: PDF, Word, Excel
scans\ <- what your scanner saves: PDFs and scanned pictures
photos\organized\ <- DA files photos here, by year and month
documents\organized\ <- and documents here
output\ <- DA's records and reports
4. Open it
Double-click Open DA.cmd in the archive folder. DA's menu opens. That's all you need from
here on.
The menu
DA - jane-archive-199x D:\jane-archive-199x years: 1990-1999
intake: 1,204 files waiting organized: 5,873 photos, 12 documents last run: 2026-10-13 21:31
1 Process intake 2 Status 3 What needs review 4 Undo last set-aside
5 Refresh index 6 Switch archive 7 New archive U User guide H Help Q Quit
Type the number or letter, then press Enter.
| Key | What it does |
|---|---|
| 1 Process intake | Files what's in intake\. See da run. |
| 2 Status | This archive at a glance: what's waiting, what's filed, the last run. |
| 3 What needs review | What the last run left for you to look at, with the reasons. |
| 4 Undo last set-aside | Puts the duplicates from the last run back where they were. |
| 5 Refresh index | Updates DA's list of files, for example after you moved files yourself. |
| 6 Switch archive | Open another archive on this computer. |
| 7 New archive | Create a new archive, or turn a folder into one. |
| U User guide | Opens this guide in your web browser. |
| H Help | A short reminder of how DA works. |
| Q Quit | Leaves the menu. The window stays open for typing commands. |
Typing da on its own in any terminal opens the menu too. Outside an archive, it lists the
archives on this computer for you to pick from.
Common workflows
| Workflow | What it's for | Menu |
|---|---|---|
| Add photos from a phone or camera | Get photos into intake | (File Explorer) |
| Add scanned documents | Get paper into the archive | (your scanner) |
| da run | File what's in intake | 1 |
| da report | See what's there and what needs you | 2, 3 |
| Fix what needs review | Help DA with photos it couldn't date | 3 |
| Duplicates: put back or delete | Undo a set-aside, or free the space | 4 |
| da split | Move photos from another decade to the right archive | steps below |
| Contact sheets | See a whole folder of photos on one page | (made for you) |
| da find | Search by month, name or tag | steps below |
| da tag | Label files (beach, grandma, taxes) |
steps below |
| Switch between archives | Work in another archive | 6 |
| Update DA | Get the newest version | steps below |
da run is a command you can type. The other "da ..." names stand for a few commands or menu
items used together.
Add photos from a phone, camera or memory card
- Open the archive's intake folder in File Explorer:
D:\jane-archive-199x\intake\photos\. - Make a folder for this batch, named so you'll recognise it, e.g.
phone-2024-summer. - Copy the photos into it:
- iPhone: connect it with its cable and unlock it. Tap Trust if it asks. In File Explorer, open This PC > Apple iPhone > Internal Storage > DCIM and copy the folders you want. (See iPhone HEIC photos about the photo format.)
- Android phone: connect it, choose File transfer on the phone, then open This PC > (your phone) > Internal storage > DCIM > Camera.
- Camera or memory card: put the card in the computer (or connect the camera), then open its drive and the DCIM folder.
- Copy, don't move, until DA has filed them and you've checked the result.
- Then process them.
Any folder names and file names are fine. DA works out the dates itself.
Add scanned documents
- Set your scanner to save into
D:\jane-archive-199x\intake\scans\(or copy the files there afterwards). - PDF is best for documents. Pictures (
.jpg,.png,.tif) saved inscans\are treated as documents too, not as photos. - Word and Excel files and other PDFs go in
intake\docs\. - Then process them. Documents are filed in
documents\organized\by the date inside them (when they were scanned or created).
da run: file new photos and documents
Menu: 1 Process intake. DA lists the folders in intake\ and how many files each holds:
intake\photos\
# folder files
0 process all of intake\photos\ 5,081
1 phone-2024-summer\ 1,204
2 scans-from-grandma\ 877
number: open 0: process text: filter .. up Enter: back
- Type a number to open that folder. A folder with no folders inside it is processed straight away.
- Type 0 to process the folder you're in, everything in it.
- Type some text (e.g.
grandma) to show only the folders whose names contain it. - Type .. to go up a level, or just press Enter to go back.
DA then works through seven steps. Before each step that changes anything, it asks; type y to go ahead, or n to stop there (nothing after that point changes).
| Step | What happens | Changes files? |
|---|---|---|
| 1 Index | Lists everything in the archive | No |
| 2 Hash | Fingerprints the photos that could be copies | No |
| 3 Duplicates | Moves exact copies to _duplicates-holding\ |
Yes, if you say y |
| 4 Preview | Works out each photo's date, new name and folder | Only writes the sidecar notes |
| 5 Check | Shows how many will be filed, by year, and warns about anything odd | No |
| 6 File | Renames and moves the photos into organized, then checks each one arrived intact, and makes each folder's contact sheet |
Yes, if you say y |
| 7 Refresh | Updates the index | No |
How long it takes: a few minutes for a few hundred photos; roughly an hour for every 50,000. It's fine to leave it running.
What stays in intake, on purpose:
- Photos with no date anywhere (none inside the file, none in its name). See
Fix what needs review.
- Photos from another decade (with years set). See
da split.
- Videos (.mov, .mp4): DA doesn't file videos yet. The video half of an iPhone
Live Photo is the exception: it's filed with its photo.
- Camera raw files (.CR2, .NEF, ...) without a matching JPG. With a matching JPG, the raw
file is filed right next to it.
Running it again is always safe. Files already filed aren't touched, and new ones are processed the same way.
From a terminal (handy for leaving a big run going overnight):
da run # all of intake
da run intake\photos\phone-2024-summer # one folder
da run --yes # don't ask; go straight through
da run E:\old-backup # a folder outside the archive: DA offers to copy it in first
da report: what's in the archive and what needs you
Menu: 2 Status and 3 What needs review.
- 2 Status: the archive's name and years, what's waiting in intake, what's filed, the last run.
-
3 What needs review: what the last run left behind, grouped by reason, with examples:
- No date (in the file or its name)
- Taken outside this archive's years
- File name and camera date disagree (DA used the date in the name)
- Duplicate inside the folder (left for you to decide)
The full list is saved as
review.csvin that run's folder (DA shows where). It opens in Excel. 3. More detail, from a terminal:powershell da db stats # how many photos and documents, by year da intake status # how far each intake folder has got da validate photos\organized # check what's already filed: names, folders, notes (nothing moves)4. Every run's record is kept inoutput\runs\<date-time>-run\: a summary, the duplicate list, and the preview and filing reports, file by file.
If you added or moved files yourself, choose 5 Refresh index first so the numbers are current.
Fix what needs review
Choose 3 What needs review, then for each reason:
-
No date: DA couldn't find when the photo was taken. If you know (even roughly), put the date at the start of its name and run again:
1998-07-04 Beach.jpg(day known)1998-07 Beach.jpg(month known)
A year on its own (
1998 Beach.jpg) isn't enough to file it, so it stays. - Outside this archive's years: it belongs in another archive. See da split. - Name and camera date disagree: usually the camera's clock was wrong. DA used the date in the name. If the name is the wrong one, rename the file inorganizedyourself. - Duplicate inside the folder: two identical files. DA leaves both; delete the one you don't want.
Duplicates: put back or delete
Exact copies are moved to _duplicates-holding\<date>\ in the archive, in the same folders they
came from.
- Put them back: 4 Undo last set-aside. Or, for an earlier run, from a terminal:
da intake undo "<run folder>\set-aside-moved.csv". - Delete them to free the space, once you're happy with the result: delete the
_duplicates-holdingfolder. Every file in it is an exact copy of one that was kept.
da split: move files to the right decade's archive
With years set (e.g. 1990-1999), a photo taken in another decade stays in intake, listed as
"Taken outside this archive's years". To move those to their own archive:
- List them: 3 What needs review. Note where it saved
review.csv. - Create (or pick) the other archive:
da setup D:\jane-archive-200x --years 2000-2009. - Move them there, with their sidecars. In a terminal, with your own paths (this moves the
2000s ones; the
detailcolumn starts with the date, e.g. Taken 2005-07-04, ...):powershell $review = "D:\jane-archive-199x\output\runs\<date-time>-run\review.csv" $to = "D:\jane-archive-200x\intake\photos\from-199x" New-Item -ItemType Directory -Force $to | Out-Null Import-Csv $review | Where-Object { $_.detail -like "Taken 200*" } | ForEach-Object { Move-Item -LiteralPath $_.file -Destination $to if (Test-Path -LiteralPath "$($_.file).meta.json") { Move-Item -LiteralPath "$($_.file).meta.json" -Destination $to } }If two files have the same name, the second gives an error and stays where it was; move it by hand. A raw file (.CR2) beside a moved JPG isn't on the list; move it too. - File them there: open the other archive (its
Open DA.cmd, or 6 Switch archive) and choose 1 Process intake, folderfrom-199x.
da find: search the archive
DA keeps an index of every file: its name, folder, date and tags. Choose 5 Refresh index first if anything changed, then in a terminal in the archive:
- Everything from one month (by the folder it's filed in):
powershell da db query "SELECT file_name, folder FROM files WHERE area='photos' AND folder LIKE '2010\2010-07%'" - By name:
... WHERE file_name LIKE '%0704%'. For the name a file had before DA renamed it:... WHERE source_path LIKE '%Beach%'. - Documents: use
area='documents'instead ofarea='photos'. - By tag (see da tag):
da findit tags photos\organized -r beach -v. Add-r grandmafor both tags,-x beachto leave a tag out, or--date-prefix 2010-07for one month.
Or just browse: every photo is in photos\organized\<year>\<year>-<month>\, in date order, and each
folder's _contact-sheet.pdf shows them all on a page or two.
Contact sheets: a folder at a glance
Every folder DA files photos into gets a contact sheet: _contact-sheet.pdf, small pictures of
all its photos, 20 to a page, each with its name and the date and time it was taken. Double-click
it to see a whole month at once, or print it.
- It keeps itself up to date. When da run files more
photos into a folder, its sheet is made again. If you add, remove or replace photos yourself,
Check what's already filed (
da validate) makes it again. - For folders filed before DA made sheets, or any other folder of photos (even outside an
archive), make them yourself; this does every folder inside the one you name:
powershell da contact-sheets photos\organized\1998Add--forceto make every sheet again. - DA never files, indexes or checks the sheet itself, and deleting one does no harm.
da tag: label photos and documents
There's no tag command yet, so for now a tag is added by editing the file's sidecar:
- Open the sidecar next to the photo, e.g.
photo_19980704_101500_ab12.jpg.meta.json, with Notepad (right-click > Open with > Notepad). - Find the
"photoit"part (for a document,"scanit") and its"tags": []line. Put your tags inside the brackets, in quotes, with commas between them:json "tags": ["beach", "grandma"],Change nothing else, and save. - Choose 5 Refresh index, so da find can see the new tags.
Switch between archives
- 6 Switch archive in the menu lists every archive on this computer. Type its number.
- Or double-click that archive's
Open DA.cmd. - Or in a terminal:
da archiveslists them, andda archives --open 2opens number 2.
Update DA
Download the newest DA.exe and
install it the same way as the first time (Getting started).
Close any open DA windows first. Your archives aren't touched. To see which version you have:
da version.
Less common workflows
| Workflow | What it's for |
|---|---|
| iPhone Live Photos (.MOV files) | The short videos that come with iPhone photos |
| iPhone HEIC photos | The iPhone's photo format |
| Edit an archive's settings | Change its name, years or intake folders |
| Share an album with Google Photos | Let family see some photos online |
| Process a folder from somewhere else | A USB stick, an old backup, another drive |
| Start a new archive for another person or decade | One archive per person per decade |
| Use DA on another computer | Take an archive on a USB drive to another PC |
| Back up an archive | Keep a second copy safe |
| Check what's already filed | A check-up of organized |
| Do the run's steps one at a time | For a careful look between each step |
| Coming soon | What DA will do next |
iPhone Live Photos (.MOV files)
An iPhone Live Photo is two files with the same name: the photo (IMG_1234.HEIC or .JPG) and
a 2-3 second video (IMG_1234.MOV).
- DA keeps the pair together. When it files the photo, the video goes with it, renamed to
match:
photo_20210601_100000_ab12.heicandphoto_20210601_100000_ab12.mov, side by side. - Videos left behind by an earlier run (filed before DA did this, or copied in after their
photo was filed) can be found and put beside their photo. In a terminal, in the archive:
powershell da pair-movies # shows what it found; nothing moves da pair-movies --apply # moves themDA matches each video with the photo that was filed from the same place under the same name. It lists what it moved, andda intake undo "<the file it names>"puts them back. A video whose photo hasn't been filed yet is left alone; file the photo first. - Other videos (not part of a Live Photo) stay in intake: DA doesn't file videos yet.
- Don't want Live Photos? On the iPhone, turn off Live (the round icon at the top of the camera) before taking photos.
iPhone HEIC photos
iPhones save photos as HEIC (IMG_1234.HEIC): the same quality as JPG in about half the space.
- DA files HEIC photos like any other, using the date the iPhone stored in them.
- To see them on Windows, install the free HEIF Image Extensions from the Microsoft Store (open the Microsoft Store app and search for HEIF).
- To make JPG copies (for sharing, or for a program that can't open HEIC):
powershell da heic-to-jpg photos\organized\2021\2021-06The copies go in a new folder next to it (2021-06-jpg), with the same date taken; add--out D:\to-shareto put them somewhere else. The HEIC originals stay where they are. Running it again only converts photos that are new or changed. - To get JPGs from the iPhone instead, on the iPhone open Settings > Photos and, under Transfer to Mac or PC, choose Automatic. The iPhone then converts photos to JPG as they're copied. (Keep Originals copies the HEIC files.)
- To find the HEIC files in the archive:
da db query "SELECT path FROM files WHERE extension='.heic'".
Edit an archive's settings (da-archive.yaml)
Each archive's settings are in da-archive.yaml in its folder.
- Make a copy first: right-click
da-archive.yaml> Copy, then Paste in the same folder. If anything goes wrong, rename the copy back. - Open it with Notepad (right-click > Open with > Notepad).
-
Change what you need. Keep the spaces at the start of each line exactly as they are; they matter. Lines starting with
#are notes and are ignored. ```yaml archive: name: "jane-archive-199x" # the name shown at the top of the menu years: "1990-1999" # the years this archive takes; null for any yearintake: # the folders in intake\ and what each one holds photos: photo docs: document scans: document receipts: document # an extra folder: anything in it is filed as a document ``` 4. Save, then check: open the archive's menu. If DA can't read the file, it says which line is wrong; fix it or put the copy back.
A new intake folder you add here is created the next time you run da setup on the archive
(da setup D:\jane-archive-199x), or you can create it yourself.
Share an album with Google Photos
DA doesn't upload to Google (Google no longer lets apps like DA create shared albums), but your filed photos are easy to share by hand:
- Go to photos.google.com and sign in.
- Click Upload (or drag photos onto the page) and pick them from the archive, e.g.
D:\jane-archive-199x\photos\organized\1998\1998-07\. - Click Create (the +) > Album, give it a name, and add the uploaded photos.
- In the album, click Share and choose people, or Create link to send the link to anyone.
The originals stay in your archive; Google gets copies.
Process a folder from somewhere else
For photos on a USB stick, an old backup drive, or anywhere outside the archive:
da run E:\old-backup\photos --archive D:\jane-archive-199x
DA offers to copy the folder into the archive's intake\ and processes the copy, so it can
check every photo against what's already filed. The originals aren't touched; delete them yourself
once you're happy.
Start a new archive for another person or decade
da setup D:\sam-archive-201x --years 2010-2019
Then double-click its Open DA.cmd. To make an archive from a folder that already has photos in it,
point da setup at that folder: DA moves its contents into intake\, and lists every move in
output\runs\<date>-setup\moved.csv (where each item was, and where it went).
Use DA on another computer
An archive is just a folder, so it can live on a USB drive and move between computers.
- Install DA on the other computer.
- Plug in the drive and double-click the archive's
Open DA.cmd. It works whatever drive letter Windows gives the drive. - Each computer keeps its own list of archives for 6 Switch archive. Opening an archive once
with its
Open DA.cmdadds it to that computer's list.
Back up an archive
Everything about an archive is inside its folder: the photos, the documents, the settings, the sidecar notes and the records. To back it up, copy the whole archive folder to another drive (File Explorer: right-click the folder > Copy, open the backup drive, Paste).
_duplicates-holding\only holds copies; you can leave it out.- The
.da\folder holds DA's index. It's fine to copy it, and DA can rebuild it if it's missing (5 Refresh index).
Check what's already filed
da validate photos\organized
da validate documents\organized\2010
This checks names, folders and sidecar notes, and finds duplicates inside that folder. It's a
check only: nothing moves (it just adds any missing sidecar notes, and remakes any
contact sheet whose folder has changed). The report is saved
in output\validateit\.
To fix what it found in organized (wrong names, a photo in the wrong month), add
--mode repair. On intake, or on a folder outside the archive, repair stops and tells you to use
da run instead, which sets duplicates aside first.
Do the run's steps one at a time
The same steps as da run, one command each, for when you want to look closely between them:
da db build # 1 index
da intake hash --folder phone-2024 # 2 hash (folder inside intake)
da intake set-aside --folder phone-2024 # 3 plan only: what would be set aside
da check output\runs\<ts>-set-aside\plan.csv # re-check a sample of the plan
da intake set-aside --folder phone-2024 --apply # set them aside
da validate intake\phone-2024 --kind photo # 4 preview
da check output\validateit\validateit-report-<ts>.json # 5 check
da validate intake\phone-2024 --kind photo --mode repair --force # 6 file (--force: you did 2-3 yourself)
da verify <the repair report it printed>
da db build # 7 refresh
Coming soon
- A tag command:
da taginstead of editing sidecars by hand.
If something goes wrong
| What you see | What to do |
|---|---|
| 'da' is not recognized | Close the terminal and open a new one. If that doesn't help, install DA again. |
| Windows protected your PC | Click More info, then Run anyway. DA isn't signed by a company, so Windows asks once. |
| Not inside an archive | Open the archive with its Open DA.cmd, or type da and pick one, or add --archive D:\jane-archive-199x to the command. |
| DA.exe is in use while updating | Close every DA window, then install again. |
| A run seems stuck | It's probably working through a big folder. Big runs take hours; the step number shows where it is. To stop, press Ctrl+C. Photos already filed stay filed, and running it again carries on with the rest. |
| A photo was filed with the wrong date | The camera's clock was wrong. Rename the file in organized with the right date at the start, and move it to the right month folder. |
| Nothing to file | Everything in that folder is either filed or waiting for you. See 3 What needs review. |
Files are in _duplicates-holding that you want back |
4 Undo last set-aside, or da intake undo "<run folder>\set-aside-moved.csv". |
Reference
How DA works out a date
In this order:
- A date and time in the file name (
2024_07_04_10_15_00.jpg,20240704_101500.jpg). - The date stored inside the file:
- photos: the camera's "date taken", including iPhone HEIC photos. A camera whose clock was never set (1 January 1970) doesn't count.
- PDFs: when the PDF was made (scanned, printed or saved).
- Word, Excel, PowerPoint: when the document was created.
- A date without a time in the name (
2010-04-27, or US-style04-27-2010). If the date inside the file is from that same day, its time is used too. - A month and year in the name (
Resume April-2010): the date inside the file, if it's from that month. Otherwise only the month is known, which isn't enough, and the file stays for review. - A year only (
Beach 1998.jpg): not enough; it stays for review.
When the name and the date inside disagree, the name wins, and the file is listed for review.
Photos are named photo_YYYYMMDD_HHMMSS_xxxx.jpg and documents doc_YYMMDD_HHMMSS_xxxx.pdf; the
last four characters come from the file's fingerprint, so two photos taken in the same second
still get different names.
Photo or document?
PDFs and Word, Excel and PowerPoint files are always documents. A picture (.jpg .png .tif .bmp)
could be a photo or a scan, so the intake folder decides: in docs\ or scans\ it's a document;
anywhere else it's a photo. To decide for a whole run: da run intake\old-scans --kind document.
Which archive a command works on
- The one you name:
--archive D:\jane-archive-199x(before or after the command). - Otherwise, the archive the folder you name is in.
- Otherwise, the archive you're in: the terminal's current folder, or one above it.
Commands
| Command | What it does |
|---|---|
da |
The menu |
da run [folder] |
File what's in intake (or one folder of it) |
da status |
This archive at a glance |
da setup <folder> [--years 1990-1999] |
Create an archive, or turn a folder into one |
da archives [--open N] |
The archives on this computer |
da guide [--pdf] |
Open this guide (or its PDF) |
da db build / da db stats / da db query "<SQL>" |
The index: refresh, counts by year, search |
da intake status / da intake undo <moved.csv> |
Intake progress; put duplicates back |
da validate <folder> |
Check a folder (nothing moves) |
da contact-sheets <folder> [--force] |
Make the contact sheets for every folder of photos in it |
da findit tags <folder> -r <tag> |
Find files by tag |
da pair-movies [--apply] |
Put Live Photo videos left in intake beside their filed photo |
da heic-to-jpg <folder> [--out <folder>] |
JPG copies of HEIC photos |
da version |
Which version of DA this is |
<DA.exe> install |
Install or update DA on this computer |