Maybe I have not made clear what I try to accomplish: I do not want to add another format, and did not asked for detailed command-lines. I just want to replace a present book in the same format because its source (LibreOffice, Asciidoc etc.) has changed.

As far as I can tell you really do want to replace the format, not add a book. The add_format command does that. Why do you want add a new book if the source file has changed instead of replacing the file in the existing book?

As for the ID, I assume that the book has some known attribute that you can use to match the book. If that attribute is title, then the following command provides trivially parsable output

@Matsendrasana - Assuming the number of replacements you want to do at any given time is small, then why not drag/drop the replacement files from your editing location into the the Book Details panel of the relevant book.

I do it frequently for RTF, PDF, EPUB, MOBI & PRC formats - the new files replace the old files in the relevant "library/author/title (id)" directory. You can also drag/drop replacements into the Edit Metadata Formats box.

I found it by suck it and see, it doesn't seem to be documented - Managing book formats has - "You can add a new format, delete an existing format and also ask calibre to set the metadata ..."

@Matsendrasana - Assuming the number of replacements you want to do at any given time is small, then why not drag/drop the replacement files from your editing location into the the Book Details panel of the relevant book.

I'm a (lazy) programmer. Why repeat it when you can automate it?
Since I do not update the library each time a source has been edited, but maybe just at the end of the day or the week, a script is safer.

@kovidgoyal: Thank you! The --separator : --fields title options are the solution! I wasn't aware of them. Although I use the newest Calibre:

Code:

$ calibredb --version
calibredb.exe (calibre 0.9.6)

-h only shows the options --version, -h and --help. With --separator and --fields the rest indeed is easy. Maybe I should have read the online manual more carefully.

@kovidgoyal: Thank you! The --separator : --fields title options are the solution! I wasn't aware of them. Although I use the newest Calibre:

Code:

$ calibredb --version
calibredb.exe (calibre 0.9.6)

-h only shows the options --version, -h and --help. With --separator and --fields the rest indeed is easy. Maybe I should have read the online manual more carefully.

That is why Kovid said in post #11 to use

Code:

calibredb list -h

If you run that command you see all the options, as shown under the spoiler.

Spoiler:

Code:

C:>calibredb list -h
Usage: calibredb.exe list [options]
List the books available in the calibre database.
Whenever you pass arguments to calibredb.exe that have spaces in them, enclose the arguments in quotation marks
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FIELDS, --fields=FIELDS
The fields to display when listing books in the
database. Should be a comma separated list of fields.
Available fields: *authtest,*comment,*comment2,*commen
t3,*comp2,*comp3,*comp4,*comp5,*comp_2,*composite,*del
ete,*deleteme,*enum,*enum2,*genre,*isbn,*mybool,*myboo
l2,*mydate,*myfloat,*myint,*myint2,*myrating,*people,*
s_dex,*series,*series_index,*text,*textmult,*tool,auth
or_sort,authors,comments,cover,formats,identifiers,isb
n,last_modified,pubdate,publisher,rating,series,series
_index,size,tags,timestamp,title,uuid
Default: title,authors. The special field "all" can be
used to select all fields. Only has effect in the text
output format.
--sort-by=SORT_BY The field by which to sort the results.
Available fields: publisher,series_index,formats,isbn,
uuid,pubdate,rating,series,timestamp,author_sort,cover
,comments,identifiers,last_modified,authors,title,tags
,size
Default: none
--ascending Sort results in ascending order
-s SEARCH, --search=SEARCH
Filter the results by the search query. For the format
of the search query, please see the search related
documentation in the User Manual. Default is to do no
filtering.
-w LINE_WIDTH, --line-width=LINE_WIDTH
The maximum width of a single line in the output.
Defaults to detecting screen size.
--separator=SEPARATOR
The string used to separate fields. Default is a
space.
--prefix=PREFIX The prefix for all file paths. Default is the absolute
path to the library folder.
GLOBAL OPTIONS:
--library-path=LIBRARY_PATH, --with-library=LIBRARY_PATH
Path to the calibre library. Default is to use the
path stored in the settings.
Created by Kovid Goyal <kovid@kovidgoyal.net>