--batch was added to annex add 6 years ago but only now we got to add usage of it in datalad (PR: 5722). Unfortunately on the initial attempt we got tests failing and looking into it I found that its behavior differs from non-batched annex add when given directories. That is described in the original issue in Implementation notes as "made it not recurse into directories". Unfortunately, such a limitation forbids consistent use of annex add --batch as drop-in replacement for plain annex add without reimplementing git-annex logic on treating dotdirs etc to decide which files actually should be added to git-annex or not.

For that reason I think it would be great if add --batch would gain the "super-power" to be able to handle directories as well.

edit: I forgot to add my lovely reproducer to show inconsistency "just in case":

$> bash annex-add-batch-dir.sh
> set -eu
>> mktemp -d /home/yoh/.tmp/dl-XXXXXXX
> cd /home/yoh/.tmp/dl-zmItF0C
> git init
Initialized empty Git repository in /home/yoh/.tmp/dl-zmItF0C/.git/
> git annex init
init  ok
(recording state in git...)
> mkdir d-cmd d-batch
> touch d-cmd/file d-batch/file
> git annex add d-cmd
add d-cmd/file 
ok
(recording state in git...)
> echo d-batch
> git annex add --batch

> git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   d-cmd/file

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    d-batch/

so annex add and annex add --batch behave differently on folder paths.

Comments seem clear that this should not be changed, and there are easy things users of --batch can do to recurse directories themselves.

Also I checked and the documentation of --batch for git-annex add (and other commands) does say that it reads a file from stdin, so there's at least that documentation that it does not support directories.

So, wontfix --Joey