Batch Runner
Batch Runner Pro

Run multiple programs in a batch..

http://corz.org/windows/software/batch-runner/
http://corz.org/windows/software/batch-runner/batch-runner-pro.php

(c) corz.org

itstory.. aka 'version history'.. aka 'changes'..
[known bugs at the bottom]

Key..

* Fixes
~ Changes
+ New stuff

** NOTE:   If upgrading from <0.9.9.19 you will need to re-enter your
registration details. Apologies!

Batch Runner Pro 0.9.11 [current release]

+   Added "Reveal In Explorer" to context menu of command lists, so you can
get directly to the exe/bat/(other allowed executable) directly.

*   Fixed a bug in the handling of paths containing "\n", which will no
longer translate into new-line sequences in the log.

*   Minor adjustments to the list edit window.

Batch Runner Pro 0.9.10.1

*   Fixed a bug in the "hide_running_tasks" setting, which was getting stuck
at the default, "on".

Batch Runner Pro 0.9.10.0

+   Custom exit code ranges.

When you have "halt_on_task_fail" set to true, you can now have Batch
Runner Pro apply this action only to exit codes within a specific range.
Tasks failing with exit codes outside the range will be logged, but the
batch wil continue. You can, of course, set this range.

Batch Runner Pro 0.9.9.19

+ MANY more options are now available in the per-batch scope, namely /ALL/ the
logging and trace (see below) options as well as:

select_all
ignore_selections
precision_seconds
success_msg
notify
beep

This is on top of the already batch-enabled:

halt_on_setup_fail
halt_on_task_fail
cycle_main_batch
randomize_batch
max_batch_time

+ The new per-batch options will now get their state logged along with the
other per-batch options, if you have that enabled. You can now also log the
logging options, if you so desire.

+ Inheriting some more ready-made functionality common to many of my apps..

+ You can now have Batch Runner Pro compress your logs and logging folder (if
it isn't the program folder) to save space. This uses Windows' own built-in
compression mechanism.

+ Batch Runner Pro can now be brought to the front by simply hovering your
mouse over its tray icon. The sensitivity can be set in your ini (1 = after
a delay, 10 = immediately). Be aware that this is set to true by default.

+ Some improvements to the About Box System Info.

+ Added a special "dos" instruction. This switch should hopefully never be
needed, but if you ever have troubles running a built-in DOS commands,
prepend your command statement with "dos|" (no quotes) and Batch Runner Pro
will use a special dos-only mechanism to run the command (basically invoking
the system command interpreter to handle the command). This should only ever
be required to run internal DOS commands like DIR, COPY, MD, RD, etc., not
external commands like XCOPY, ATTRIB, NET, etc., or regular DOS (console)
applications. It shouldn't ever hurt, however, and is safe to use on most
commands.

Using the same format, I added another special instruction , "trace|", which
will track the output (STD_OUT) from the task's process and feed it to a
specified trace file. If you perform a "Run This Command" (on a single
command) from the task's context menu, and the task has trace| enabled, the
output is instead directed to the screen. You can also choose to have this
happen on all trace output.

+ You can combine the trace| and dos| switches, so long as they are in that
order, e.g. trace|dos|dir c:

+ Finally added the "Run This Command" option to the pre- and post- lists,
handy for testing commands in-situ.

~ Combo (batch) selections will now be remembered from the very first (launch)
selection, as opposed to only from the session's first user selected batch.

+ Added a "shellex|" switch which will run the command using the system's
ShellExecute mechanism. This is useful for running commands which are not
programs. For instance, you could use a URL or music playlist as your task.
The latter, coupled with Batch Runner Pro's countdown facility makes a handy
musical alarm! You can launch any file type which your system knows how to
handle, .txt, .doc, whatever you like.

NOTE: when running commands using the shellex| mechanism, the result will
always be positive, aka. "Success".

+ You can now access the exit code of the previous command with @exitcode, and
use it as a parameter in the next command,

e.g. c:\path\to\app.exe /p @exitcode

+ You can now completely disable the Batch control options
(cycle/time/randomize) in the GUI, if required.

+ Added a new @token, "@programsdir32", which will get you the location of the
32 bit Program Files Directory if running 64 bit Batch Runner Pro under 64
bit windows.

~ Pipe ("|") characters are now transformed coming in and out of the command
list, to prevent folk inadvertently creating "columns" in their list. They
will appear in the list as /broken/ pipe ("¦") characters.

* Fixed width font now used in the command input (doh!). You can also set a
couple of other fonts in the prefs.

* Cleaned up some inconsistencies in the time-stamped log formatting.

* The Command Dialog input will now correctly NOT remember its size and
position if cancelled (Esc, or closed with the "x")

* Fixed a potential issue where empty values in the per-batch options could be
passed to the batch. The expected behaviour is that the default (master)
value is used.

* Fixed an issue where deleted batches could show up in the batches list (if
you deleted the same batch more than once) - the sequential backups were
being missed.

* Fixed the Drag&Drop onto the command input dialog which I recently broke.
The dropped item will once again add to the current command, intead of
destroying it. Note: you can drag multiple items onto this input, too.

* Fixed a bug in the licensing code - BRP was the first app to have my new
licensing code and missed a couple of updates!

The only upshot is that you may need to enter your registration details
again - apologies for that!

Batch Runner Pro 0.9.9.18

+ Improved exit logging.

* Fixed a bug I recently introduced, running batches from the command-line
would fail. Sorry about that!

* Fixed a bug where opening the About Box during a background run would
produce an error.

* Cleaned up and enlarged exit codes (and fixed missing ones).

Batch Runner Pro 0.9.9.17

+ The architecture is now listed in the About Box (x86/x64) - there's also a
handy Easter egg for folks who click that.

+ If Batch Runner Pro's log file gets deleted while it is logging, it will now
start a new log file immediately.

As the deletion is way more likely to happen during a task run than in the
minute space /between/ tasks, Batch Runner Pro also remembers the previous
logged line so that the command log lines (which are written in two parts -
command and result) can be recreated in their entirety, rather than having a
log beginning with "Result: 0  -- success!!!", or whatever.

Batch Runner Pro also begins such new logs with a line indicating that the
previous log was deleted.

~ Batch Runner Pro will now differentiate between a task-driven abort and user
abort in both messages and logs.

+ You can now choose to have Batch Runner Pro NOT abort the main batch tasks
if one or more of those tasks returns a negative (i.e. -1) result, for
programs that erroneously return negative results on success. This can also
be set at the per-batch scope using" opt|" construct, e.g.
opt|halt_on_task_fail=false. When set to false, BRP treats the exit code
like a regular fail.

+ You can now also set the halt_on_setup_fail= preference on a per-batch
scope, in case you have one of those erroneously exiting apps in your
batch's setup/wrap-up tasks.

+ Finally documented (and added to the ini) the sort_batch_list= preference,
which has always existed but was previously enabled and immovable. You can
now easily disable this behaviour, if required, and instead have your
Batches dropdown unsorted, listed in the same order they appear in your ini
file.

* Fixed a couple of bugs-at-once where responses where expected from my custom
Message Box, namely deleting files where you had delete warnings enabled and
the notification for auto-naming (on multiple drag-and-drop if it is
disabled).

* Fixed a bug where multi-line log separators would have the second line
printed without a timestamp (if you had set timestamp_everything=true and
used "\n" in your log separator)

* Fixed a bug where the timestamp_everything= preference wasn't being reset on
loading new logging prefs (when loading a new batch, for instance).

Batch Runner Pro 0.9.9.16

+ During a run, the "Run Batch" button now transforms into an "Abort" button.
Its function is self-explanatory.

~ Online version checking is no longer performed if Batch Runner Pro was
started as a background task.

~ The main window should now activate properly at all times when previously
minimized via the minimize button.

* Fixed a bug where viewing the About Box whilst counting down to a batch run
would screw up the batch run timer.

Batch Runner Pro 0.9.9.15

+ Countdown timer.

This has been on the 2do list for as long as I can remember! If you
depress the <Shift> key, the "Run Batch!" button turns into a
"CountDown" button. Click it and you can enter a time to wait until
beginning the batch run. The time input format is the same as the Time
Limit input (5{minutes}, 1m, 25s, 2.5h, etc.).

If you have TitleBar time enabled, you see a visual countdown, showing
time remaining until the batch run begins.

Holding the <Shift> key whilst activating your chosen Run HotKey
("Enter", by default), gets you directly to the Countdown timer input. In
other words, the HotKey for "Run Batch after Countdown" is Shift+Enter.

+ Improved minimize button functionality on XP, it now behaves the same as
Win7, hiding BRP cleanly to the tray.

+ If you click on the "registered to" email address in the (registered) about
box, <em>and your reg_to= preference is empty</em>, you will be presented
with an input to enter a custom "Registered To" string. Now your reg_to=
preference is not empty.

By the way, you can quickly get to the About Box via the secret HotKey:
Win+Alt+A.

+ Batch Runner Pro will now resolve shortcuts (.lnk files) of dropped items -
they need to be shortcuts to suitable file types, of course.

+ There is now a single menu item for pause/resume, its function switching
depending on the running state. The HotKey is still easier!

+ Cleaned up the sequencing of the title bar messages, and added messages for
those running without times in the title bar.

+ Added a new option to the Batches context menu - "Save As AutoRun", which
saves the current batch as a clickable command that will launch Batch Runner
Pro with the current batch, run it and then die. You can also select from
foreground or background operation.

+ Improvements to the license registration encryption scheme. Hopefully this
should be the last license re-issue before final release, but no promises!

~ The splash screen now increments its delay depending on how long you have
been unregistered (won't affect you guys!), up to a maximum of five seconds.

~ Standardized the TitleBar text - it should make more sense and jump around
less.

* Fixed a bug with the pause/resume functions not working after running a
batch from the tray.

* Fixed a bug with some HotKeys not being properly set after a batch has
finished running.

~ When viewing the About Box whilst a batch is running, the time paused will
now be correctly deducted from the batch time.

Batch Runner Pro 0.9.9.14

+ Some internal clean-ups, code efficiency, the usual sweeps!

+ You can now have multi-line log separators if you wish, use "\n" in the
string to get a line break

~ Minor GUI fixes, menu item improvements, that sort of thing.

* Setting the version check interval to one day will now check once a day, as
expected, not every time Batch Runner Pro runs.

Batch Runner Pro 0.9.9.13

+ Online Version Checking - Batch Runner Pro can optionally check for newer
versions of itself and optionally direct you to the download page. You can
specify the interval between checks.

+ We now sanitize task name input for illegal characters, to prevent creation
of ini ;comments & [sections] instead of commands!

+ Added ability to use custom "registered to" string, instead of showing the
registered email address in the about box. Useful in commercial/industrial
situations.

+ You can now specify which kind of linefeed character to use in the logs,
choose from "CRLF", "CR" or "LF" (Windows, Mac or *NIX, respectively)

+ Added a minimize button to the main GUI (it's often easier than heading to
the tray!) This is a bit of an after- thought and not fully tested yet
across Windows platforms.

* Cleaned up some minor formatting errors in the logging.

* Fixed a bug where opening the about box when BRP was minimized would place
the about box waaay off-screen where the user would not be able to click it,
leaving BRP in an invisible state.

* Fixed a new issue I'd introduced where you get an extra backup of your ini
file on a new install

Batch Runner Pro 0.9.9.12

+ Added "launch" and "launchdie" command-line switches

+ TimeStamp ALL lines capability

+ pre- and post- tests now also show "running" color while running.

+ All colors can be reset at the beginning of a batch run (this is the new
default)

+ you can now set default (reset) background and text colors

+ New user-specific software licensing scheme

+ Optional UTF-8 logging, with or without the BOM

+ Background (TitleBar) timer will now also update during pre- and post- tests
(if you have that enabled)

+ You can now drag & drop multiple programs onto the task list to create many
tasks at once.

Batch Runner Pro 0.9

The new title says it all. This is a seriously beefed-up Batch Runner,
designed for professional testing environments. The initial changes were
mostly sponsored by the guys over at FEI who use it to help test their
world-renowned electron microscopes. Thank you!

Almost everything is new, here are the highlights..

+   "Pre" and "Post" tests.

Batch runner can now run three individual sections of commands, aka.
"tasks". A "Setup" section, which runs before the main batch, and
a "Wrap-Up" section, which runs after the main batch.

These three sections each have their own tab which works almost* exactly
the same way as the old Batch Runner list, except there are now three of
them.   (*it now has more functionality)

The names of the sections are also configurable.

+   Batch Cycling.

The main batch can now be looped. You can set also the overall duration
of the main batch. Setting a duration of 0 (zero) instructs Batch
Runner to keep cycling the main batch tasks until the user (or some
catastrophically failed task) tells it to abort.

+   Random Cycling.

By "random", I mean computer-generated random, which would be pseudo-
random. You probably don't have the computing power for truly random
numbers, if such things can even be actually generated. However, it's
"random enough" for our purposes, enabling you to create more realistic
test suites.

NOTE: This even works if you are /not/ cycling the batch, Batch Runner
will run through the tasks randomly until every task has been completed
ONCE (unless the times runs out in the middle, of course).

Also note, Batch Runner can disable the randomize option so it won't
appear in the GUI - this prevents undernerdlings from accidentally
altering your batch's randomize settings, be they enabled or disabled in
the global or per-batch scope..

+   Per-Batch Options.

The cycle, randomize and time limit preferences, available inside the
main Batch Runner GUI, each have a "master" and "per-batch" setting. New
batches, or batches without their own options, inherit the master
settings. Any changes you make to these settings when a batch is loaded,
get stored (and loaded again) along with the batch.

If you would like to see some other setting available in the per-batch
scope, let me know.

+   Counters.

While cycling the main batch, Batch Runner will keep a tally of the
total number of times a task has completed, as well as the number of
times a task failed (returned a non-zero result). These tallies are
updated live in the GUI and log during a batch run. A simple summary of
passes/fails/errors is also saved in your log.

+   Color-Coded Live Results

Batch Runner can color-code the main batch display so you can see, at-a-
glance which tasks have succeeded, which have failed, which have failed
more than once and which, for some reason outside Batch Runner's control,
wouldn't run at all. The pre-configured colors are:

Green:  Success
Red:    Fail
Purple: Multiple Failures
Pink:   Catastrophic failure (abort condition)
Yellow: Unable to run command.

Note, we avoid blue, which can be hard to distinguish from the Windows
standard theme selection color.

These colors can, of course, be configured in your prefs. If you want to
use red for everything except success, fine. You can also set default
(reset) colors for text and background.

So the list has to now display report colors /and/ selection colors.
Here's how to easily see both..

To view the current selection, simply activate the list. The easiest way
to do this, without destroying the actual selection, is to click on the
column headers.

To see the report colors again, simply click outside the list, for
example, in the batches drop-down. Deselecting a row (Ctrl+Click) also
reveals its report colouring. Note, even in report view, you can quickly
deselect an item with a Ctrl-Click.

Because of this simple functionality, if you are working with selections
and click "Run Batch", the list immediately switches to report view so
you can watch all the pretty colors.

You can also instruct Batch Runner to ignore any current selections and
always run /all/ the tasks in the batch. Whatever your working style,
Batch Runner Pro has an option!

+   CountDown Timer.

If you depress the<Shift> key, the "Run Batch!" button turns into a
"CountDown" button. Click it and you can enter a time to wait until
beginning the batch run. The time input format is the same as the Time
Limit input (5{minutes}, 25s, 2.5h, etc.).

If you have TitleBar time enabled, you see a visual countdown, showing
time remaining until the batch run begins.

Holding the <Shift> key whilst activating your chosen Run HotKey
("Enter", by default), gets you directly to the Countdown timer
input. In other words, the HotKey for "Run Batch after Countdown" is
Shift+Enter.

+   Windows Standard List Selection Behaviour!

Unlike regular Batch Runner, Batch Runner Pro uses a ListView control to
display the tasks (the old ListBox couldn't DO enough). This major
overhaul to the GUI has brought with it many benefits (and a lot of
work!). One of these is that you can use standard Windows Crtl+, Shift+
and Ctrl+Shift+ modifiers to select and deselect commands in the task
list.

+   Error-Level Actions.

Batch runner can respond in two ways to commands returning failure
(non-zero) results. Either a) Notify & Log the error and continue
(positive return values) or b) Notify & Log the error and abort the
batch run immediately (negative return values), move on to wrap-up
tasks.

+   Live Logging.

Rather than dump a log file at the end of the entire operation, Batch
Runner will now update the log with each task, enabling you to keep an
eye on the results. Even the current task will be in the log, minus
result, of course.

It should be noted that logging preferences are loaded fresh for each
run so if you make some change to your logging preferences, it will take
effect as soon as you begin a new log - no need to restart Batch Runner.

+   Log Timestamps.

Each log entry can be prefixed with a Time-Stamp. You can also configure
the separators for this, if you desire. You can also have Batch Runner
Pro TimeStamp only the command lines or *all* the lines, the former
being more readable by humans, the latter by machines.

Quite a few other aspects of log output are now also configurable, as
well as more intuitive and easy-to-use, a lot more information is
logged. See your automatically-updated ini file and generated log for
more details!

And don't forget you can use @Tokens in the log name, so you can have
Time-Stamped log names, too, right down to the millisecond. Or auto-
append existing logs, or automatically order them into time-stamped
folders, or a combination, whatever suits you best.

You can also specify UTF-8 logging, with or without the BOM, as well as
which kind of linefeed character to use; "CRLF", "CR" or "LF" (Windows,
Mac or *NIX, respectively).

+   The View Log menu item will now work from the moment a log is created,
so you can easily get to your log from Batch Runner's tray menu. If you
select a new batch for which a log already exists, again, the menu item
will be available immediately - no need to go fishing about in your file
system.

+   Configurable executable types.

You can drag and drop .bat, .com, or whatever you like; as well as
regular .exe files, of course) onto Batch Runner's list to automagically
add new tasks. Previously you could only drop .exe files. You can use
whatever you like when entering commands with the add command dialog.

+   Smart Auto-Size Columns.

Batch Runner does a pretty good job of auto-sizing your columns to fit
the content into the GUI, and importantly, keeping them that way when
you resize the window. You can also override the size of the counter
column and let Batch Runner do the rest, or disable this, and keep your
column widths static no matter what you do to the GUI.

You can drag the columns around (by their headers) to re-arrange them.

+   Title Bar Timer.

This is optional, of course. Batch Runner will update the time, live,
for the entire duration of the batch run, even during long tasks.

+   Duplicate and Rename Batch options added to the Batches Drop-Down.

+   Advanced GUI Controls For Advanced Users..

A new user, looking to create a new batch will click the "New Batch"
button and be presented with a dialog in which to enter a name, <OK> and
they are done. Fair enough.

An advanced user will type the new name directly into the control and
/then/ click the "New Batch" button. The new batch is created and
displayed instantly, bypassing that tedious dialog altogether.

Same story for the Rename and Duplicate batch controls. More time-saving
features for folk just looking to get the job done!

+   New HotKeys:

<NUMPAD+> = Add new task
<Delete> = Delete the currently selected task(s)
<Enter> = Run the current batch
<Pause/Break> = Pause/Resume batch run
<Ctrl+A> = Selects all tasks in the list
<Ctrl+L> = View log file for current batch
<Ctrl+P> = Edit preferences (ini)
<NUMPAD-> = Abort batch run

You will probably spot how batch run control is all together at the
right hand side of the keyboard. Not being entirely sure how handy this
is on Tenkeyless keyboards, I made those keys configurable. Knock
yourself out!

+   Portable Batches.

Batch Runner has always had the capability of running in a portable
state**. Now, so can your batches! Batch Runner will automagically and
transparently transform paths of commands within the batch runner folder
(or sub-folder). This  won't interfere with drag and drop commands or
clipboard paths but will enable you to distribute entire test suites,
batch runner included, setup and ready-to-go,

** Note: Batch Runner has now inherited my "portable" switch. If you
use this on your first run, Batch Runner will setup itself to run in
portable mode, which basically creates a new ini file in the program's
folder and sets that as the logging location. If you do it with an
already-installed Batch Runner Pro, rather than create a new ini, your
existing ini will be moved to beside the .exe.

+   Run Single Commands.

Added batch list context menu option to run the currently selected
command. Just like running the main batch, you get a color-coded
result in the GUI - handy for testing commands. Note, Batch Runner
will not attempt to hide the windows of launched processes during
a single command run, even if that is the default setting for batches.

+   Re-ordering of tasks. Select "Edit List" from the list's context menu
to get a dialog where you can re-order and sort your task list.

+   You can now drag & drop multiple programs onto the task list to create
many tasks all-at-once. Enable auto-naming for maximum productivity..

+   Auto-Name Tasks:

If you have a lot of commands to add, or have no need for names for your
tasks, you can enable auto-naming, and let Batch Runner take care of it,
dragging and dropping to your heart's content!

+   Backward-compatible with old Batch Runner batches. Batch Runner Pro will
update your ini file with all the new preferences and features, leaving
your old settings and batches intact, automatically.

+   Both 32 and 64 bit versions available.

+   Added a new "launch" command-line switch you can use to launch a batch
in the GUI from the command-line.

c:\path\to\Batch Runner Pro.exe launch <Batch Name>

Also "launchdie" which does exactly the same as "launch" except, you
guessed it, dies at the end of the batch run (assuming it ends).

+   More command-line options:

You can still run and load batches from the command-line. But now you
can create them, too. Simply send the name of your new batch on the
command line and have it created and loaded, ready to accept new tasks.

c:\path\to\Batch Runner Pro.exe My-New-Batch

You can also use this same functionality, as ever, to load existing
batches directly into a newly launched Batch Runner Pro GUI.

When loading or creating batches in the GUI from the command-line,
it's usually best to enclose any batch names containing spaces in
"quotes", e.g..

c:\path\to\Batch Runner Pro.exe "My New Batch"

This isn't necessary when running batches from the command line with
"launch", "run" or "launchdie", this would be fine..

c:\path\to\Batch Runner Pro.exe launch My New Batch

+   Auto-Refreshing Log:

During long tasks, Batch Runner can keep your log file updated, which
can be useful when incorporating with other systems. A refresh interval
can be set, after which time, Batch Runner Pro will append a simple "."
(dot) to the current log line (altering its update time, size and
checksum). When the task is complete, these dots are removed and the
result takes their place, as if nothing happened.

+   Batch Runner Pro is the first program to adopt my new software licensing
model. From your side of things, the biggest change is that everyone now
gets their own specific key. Also it's a lot easier to enter!

You can now also get to the registration dialog by clicking the Batch
Runner logo in the About Box. <Shift>+Click to force up the dialog if
you went to re-register for any reason. Click the registered-to address
for custom options.

By the way, you can quickly get to the About Box via the secret HotKey:
Win+Alt+A.

+   Online Version Checking - Batch Runner Pro can optionally check for
newer versions of itself and optionally direct you to the download page.

You can also specify the interval between checks, which are performed
when Batch Runner Pro quits. The first time it attempts this, it will
ask you to specify the interval between checks, in days. If you wish to
disable version checking altogether, enter 0. It is nifty, though!

+   Added a minimize button to the main GUI (it's often easier than heading
to the tray!)

+   LOTS of under-the-hood improvements both inside and out. If it's possible
to anticipate a user behaviour or best option, Batch Runner Pro will. If
there is some way to shave seconds off your workflow, Batch Runner Pro
will do it.

For example, if you delete a batch from the batches drop-down, Batch
Runner Pro won't simply load the next batch, it will load the /previous/
batch, up to a total of one hundred batch selections being remembered
internally. Every little helps!

+   MANY new options in your ini file, things once hard coded are now
preferences, enjoy!

+   Added a new option to the Batches context menu - "Save As AutoRun",
which saves the current batch as a clickable command that will launch
Batch Runner Pro with the current batch, run it and then die. You can
also select from foreground or background operation.

+   Batch Runner Pro will now resolve shortcuts (.lnk files) of dropped items.

~   There is now a single menu item for pause/resume, its function switching
depending on the running state. The HotKey is still easier!

*   Fixed a potential log path issue which could kick in if you used a very
long log name in a very short path.

Batch Runner FREE:

0.6.5

+   Batch Runner will now check for potential looping conditions. While
this is unlikely, it is possible to run, for example, a command that
runs Batch Runner with the command that runs Batch Runner with a
command that runs Batch Runner, and so on, and do nothing except spawn
zillions of instances of Batch Runner. Eventually, this could bring
the system down.

Now you can set a limit in your preferences, up to a maximum of ten
instances.

0.6.3

+   Added a "View the Log" option to the system tray menu, which activates
once a log has been created, and will always load the most recent log
into your preferred editor.

+   Batch Runner will now create (up to 9) sequential backups of deleted
batches inside the ini file (if you create and delete another batch
with the same name).

0.6.2

*   Fixed a bug where deleting all the batches would incorrectly set the
current batch to a deleted batch. Also, Batch Runner could be fooled
into loading its own preferences as a batch, if you set them as the
"current_batch". It should now be impossible to fool Batch Runner into
loading such a batch, non-existent batches, etc.

~   Attempting to add a new command when there are no batches will now
first bring up the "New Batch" dialog, so you have something to add
the command to.

0.6.1

+   Batch Runner now uses a different tray menu while running commands.

+   The tray icon now flashes during batch runs, to let you know it's
active (in both gui and background mode).

+   Added Pause, Resume and Abort menu items to the System tray menu that
appears during batch runs - kinda essential, really. During pause, the
tray menu icon stops flashing.

+   You can now drag and drop programs directly onto Batch Runner's main
command list.

+   Added "Delete" HotKey to delete the selected commands from the list.

+   Batch Runner now checks for out-of-desktop dimensions, and fixes them
automatically.

+   Added an "Edit Preferences" option to the tray menu - you can set your
preferred editor in the prefs, too.

~   Started a habit of making all message boxes run as children of the main
GUI so there's only one taskbar entry during warnings and such. It's
something I've not really considered before - I usually click such
things immediately away. This is tidier.

+   Cleaned up some of the dialogs and what-not, correct icons, modality,
window titles, and so on.

+   Added "beep" option to have an audio alert when the batch is complete.
This might be useful when running batches transparently, with no GUI.

Options..

false           no audio
true            use default PC speaker beep at 1000Hz
<number>        beep PC speaker using this frequency (in Hz)
<file path>     play this WAV file

+   Added more exit codes - handy if running Batch Runner from inside
Batch Runner, scripting it, or whatever..

0       Normal termination
-9      User hard quit from tray.
-1      One or more of the batch's commands failed
(exited with an error state)
5       Chosen batch is missing or invalid (in background mode)
171     Missing ini file (and couldn't create one)

0.5  [first public release]

+   Added <enter> hotkey to the add & edit inputs - more intuitive.

+   Incorporated a few more of my usual app "features"; namely, auto ini
updating (leaves existing batches and settings intact), optional
portable operation, ini @tokens, etc., as well as lots of associated
functionality, auto-log folder creation, and so on. I also created a
new token; @batch, which translates to the name of the batch being
run, as well as a couple of new date & time tokens, @date and @now.

+   Added context menu to the combo drop-down, with "reload" option - only
really useful if you have only one batch, and add a batch to the ini
manually, and want it to show in the menu.

+   Added a "Reload list" option to the list's context menu.

+   Expanded command-line options to include the "run" keyword, which
invokes Batch Runner to immediately execute the current batch and
exit. You can also specify a batch on the command-line (spaces in
batch names are okay). e.g. to run "foo bar batch" immediately, do..

C:\Path\to\Batch Runner.exe run foo bar batch

+   When you specify the "run" switch, Batch Runner launches as a background
process, runs the specified batch, and then exits. No GUI is created.

It perhaps doesn't go without saying that as well as scripting and
scheduling Batch Runner, this means that you can run instances of
Batch Runner from *inside* Batch Runner, as Batch Runner commands.
Think about it. ;o)

+   Batch Runner will now return a valid exit code on exit. If all was well,
the exit code is 0. -1 means one or more of the commands had an exit
error. The individual application errors will be in the log, if created.

*   Fixed a bug where the normal tray would appear in background mode; there
is now a separate tray menu for this, with one item - Exit, which will
quit Batch Runner after the current command completes.

+   The current running command is now displayed in the System Tray ToolTip.

0.4

+   Added delete warning messages, and ini options (you can switch them off).

+   Added help ToolTips, and an option to disable them, if required.

+   Batch Runner will now select all the commands in a newly selected batch,
so it is ready to run. This behaviour can also be disabled in the prefs.

+   Added drag+drop to the add/edit dialogs, as well as cool height snapping.

+   Added Tray toggle and tray menu (about, exit & run batch)

+   The gui controls will now grey out during batch runs, to avoid potential
confusion and mishaps. Also the tray icon becomes unclickable.

+   Added backup for deleted section (they are renamed "deleted-section")
and will no longer display in the drop-down (though remain in the ini,
just in case). If you want to completely delete a batch, you must do
this in the ini.

*   Editing commands no longer loses the command's selection in the list.

0.3

+   Added more buttons, New Command, New batch, and an edit command for the
list's concept menu, as well as the dialogs to handle these.

+   A few minor improvements to the gui, spacing, control resizing and such.
The gui now has a minimum size it will snap to if you make it too small.

*   I fixed the window size drift. That always annoys.

+   Batch Runner can load-up a new default batch on the command-line, e.g..

C:\Path\to\Batch Runner.exe My Batch

0.2

+   Added list concept menu - now you can delete and select commands from
the menu. Added preferences for height, position, etc., which are saved
to the ini file.

+   Lists are a pain. I'm gonna be using the UDFs for this one!

0.1

Basic batch running - a list, a drop-down, and a "Run batch!" button.
All editing is via the ini file. Batch Runner also does basic logging.