What would you like your DryRun() command to actually do? If nothing then we don't need something like that, you can execute your script as you show it but without the DryRun() commands.
Except, actually moving the files can take hours...
If you want your command to do something then what should it do? There are many FileActions commands, some move files up, others down, sort, fill gaps, etc. etc.
I'm not asking for anything more than the OP was. Just a different implementation.
My idea was to just draw a block on the diskmap as a perfect case, like one of the sort commands. I don't consider a FastFill() a perfect case since it can leave tiny gaps all over the place. But because of that, I can see a FileAction command isn't going to be the right thing, but some kind of global setting might be. A command to put before the volume select maybe...
I do kinda like the OP's method. Ticking a check mark box beats editing a script. Editing a script is a good way to introduce errors. MyDefrag is good on finding syntax errors in scripts, but not showing what the results of the script are until the script has run. ( Like programming, No errors on compile, let's run the program. CRASH! )
The DryRun() command as a global setting does have the ability to be used by script writing programs/frontends. It would set a flag, so commands would do everything but call the routines to move the files.
It also occurred to me this command might not be amenable to the way MyDefrag is written. It all depends on where the map comes from, I suppose.
Are you basing the map on data read from the disk? ( move file, read map from disk, move file, read...) or are you keeping track of it with the program? ( Movefile, update map, move file, update... ) I guess it could be some other overly complicated method, too, though.
I don't think MyDefrag is keeping track of and drawing the map itself, whatever method is used. Otherwise, it seems it would be a simple thing to
not move the files and
just draw the map.
If it's not that simple, never mind.
However it's done, the goal is to test run the script in minutes instead of hours.
Thanks for listening.