# How to run batch processing

This guide shows practical command patterns for directory-based and file-list
processing runs.

Use it after you already know which input mode you want and need concrete
command templates for a repeatable batch run.

## Process a directory

```bash
batdetect2 process directory \
  path/to/model.ckpt \
  path/to/audio_dir \
  path/to/outputs
```

Use this when BatDetect2 should discover the audio files for you.

## Process a file list

```bash
batdetect2 process file_list \
  path/to/model.ckpt \
  path/to/audio_files.txt \
  path/to/outputs
```

Use this when another part of your workflow already produced the exact recording
list to process.

## Process a dataset config

```bash
batdetect2 process dataset \
  path/to/model.ckpt \
  path/to/annotation_set.json \
  path/to/outputs
```

Use this when your project already has a `soundevent` annotation set and you
want to extract unique recording paths from it.

## Useful options

- `--batch-size` to control throughput.
- `--workers` to set data-loading parallelism.
- `--format` to select output format.
- `--inference-config` to control clipping and loader behavior.
- `--outputs-config` to control serialization and output transforms.
- `--detection-threshold` to override the detection threshold for a run.

## Practical workflow

For large runs:

1. test the command on a small reviewed subset,
2. lock the config files and command shape,
3. write outputs to a dedicated directory per run,
4. record the checkpoint, config paths, and thresholds used.

For complete option details, see {doc}`../reference/cli/predict`.
