Sending files from MusicBee to Picard, any way to automatically save matched tracks?

I’m looking to set up a way to send files to Picard from MusicBee and automatically save anything that’s matched to a recording in Picard

I tried putting in a command line argument I found through here in the documentation, but it didn’t seem to work? I tried both -e SAVE_MATCHED and -e SAVE_MODIFIED and got the same lack of results both times


granted, I could be going at this all wrong, I’m not too familiar with command line stuff :melting_face:

1 Like

That would work, but this is a new feature of Picard 2.9, for which we recently released an alpha version. If you are using any older version this feature is not available.


that’s cool~ I didn’t realize it was a new feature, even though it has a version number right there. I guess I’m not as aware of Picard’s version numbers as I thought I was.

just for clarity, SAVE_MATCHED will save everything in the right panel and SAVE_MODIFIED will only save stuff that’s changed in the right panel?

Our first cut at documenting this new functionality can be found in the Command and Batch Processing (which includes some examples) and Executable Commands sections of the User Guide. If you find anything that doesn’t seem right, or have suggestions as to how the documentation can be improved, please let us know. Thanks.


looks pretty good~

a few items which could probably be answered in the docs tho…

  • will the QUIT command just close the program, or will it give you the warning if you’ve got some files unsaved first?
  • is it possible to do a loop function with LOAD? i.e. if I want it to run through all folders in my music library folder, but do them one at a time and not all at once so it doesn’t load all 10,000 files. something like LOAD, SAVE_MATCHED, REMOVE_SAVED, and repeat with the next folder. that could be a good example to have if it is possible, or a good function to have if not
  • I feel like it’s possible to run command line code from a file, right? like a .bat on Windows or something? could be good to mention that in the docs too, for those of us unfamiliar with command lines

As of version 2.9, Picard will try to only run a single instance of the program at a time. When the program is started, it checks to see if there is another instance of that version, configuration file and plugin startup status -P already running.

  • does this play well with multiple installations of Picard? i.e. if I’ve got two seperate installations, one that just updates tags and another for pulling new files into my library, saving, moving, and renaming
1 Like

Thanks for the questions / suggestions. I’ll try to expand the docs to cover them.

The QUIT command waits until all queued executable commands have completed, and then initiates a shutdown request the same as if the user closed Picard from the user interface. This allows Picard to perform the same checks for unsaved files and such.

EDIT: I was wrong. It does wait for the queued commands to complete, but it does NOT perform the unsaved files check. I’ve created a ticket for this.

There is currently no looping capability within the command execution functionality, and I’m not sure how it would be implemented. As a work-around, you could have an external program walk the directory tree and feed a set of processing commands to Picard for each directory. Since everything after the LOAD command for the directory would be the same, those commands could be placed in a single “command script” file which could then be queued using the FROM_FILE command. The process might look something like:

user@computer> picard -e LOAD file/path/one -e FROM_FILE common_commands.txt
user@computer> picard -e LOAD file/path/two -e FROM_FILE common_commands.txt

Yup, it’s actually a script file of the commands to add to the queue. The script is parsed using the FROM_FILE command. It would be started something like:

user@computer> picard -e FROM_FILE command_script.txt

I actually tried to explain this (with examples) in the Command and Batch Processing page. Perhaps I’m misunderstanding your suggestion.

I’m not sure I understand. Are you saying that you have the same version of Picard installed twice, or that you have it installed once but use two different configuration files, or something else? Picard will only try to reuse a currently running instance if the new instance has the same version number and uses the same configuration file. If you want to force Picard to start a new instance, you can use the -s command line option to open a stand-alone instance.

it’s all good, with alphabetical folders like I’ve got, that should be pretty simple.

I’m talking like using a batch file (or whatever the Linux/Mac version is) to start up Picard, so you don’t have to copy the code into command prompt or whatever everytime you wanna run it. might be good to mention this (or a similar option) in the docs.

I’m talking like, two separate installations, possibly the same version. for example, one non-portable installation (say, in Program Files) and a portable installation, say on a flash drive. if one’s open already and I call the other with command prompt, it should open the other, since they’d have seperate config files?

If they have separate configuration files, then they would open separately and operate completely independently of one another. Commands entered on the command line for one would not be sent to the other for processing.

1 Like