^it's cool that you've posted a cross-platform solution but seeing as you mentioned mp3tag, it is worth noting it has options to batch embed art for a whole collection at once. another windows option is to use foobar2000. if embedded art exists in the source file, it can be transferred during conversion into any of the formats that it can tag.
Yeah, I used the Puddletag/MP3Tag 'Import cover' action to batch import cover art to my existing files but my problem was with new additions to my music library.
I'm regularly discovering new music but I'm old-school - I need to own it rather than merely stream it. It quickly becomes tiresome ripping to FLAC, then manually clicking around in GUI to transcode using two different Ogg settings, then resizing the transferred cover art (I use high quality jpeg/png images in my archival FLAC library which can sometimes be 5MB or more; I resize them to 600px to save space on my mobile device), then clicking around to batch import the resized images, then finally deleting those images. That's why it had to be a command-line solution.
I now have a transcode script which uses metaflac to extract the high-quality cover art from the FLAC files,
metaflac --export-picture-to=COVERFILE.jpg
resizes the extracted art to a 600px jpeg at 85% quality with imagemagick's mogrify command,
mogrify -resize 600x600 -quality 85 "$COVERFILE.jpg"
transcodes the FLAC files to two Ogg settings with oggenc,
oggenc -q5.5 --ignorelength -o "${FLACFILE%.flac}.ogg" "$FLACFILE"
imports the resized cover art with kid3,
kid3-cli -c "select all" -c 'set picture:"/path/to/COVERFILE.jpg" ""' "/path/to/*.ogg"
and deletes the jpegs.
rm -f *.jpg
This workflow saves me time; hope it helps someone.