My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

BetterBatch scripts are very basic - and most functionality is in external commands. This keeps BetterBatch simple - and also fosters re-use of existing components and creation of small modular components.

A 'plugin' of BetterBatch is any tool that can be run at the OS shell prompt. Additional the command should return 0 for success and any non-zero value for failure.

BetterBatch scripts halt on the first error (unless otherwise specified) and all execution is logged (once logfile is set)

Please see the documentation at: http://betterbatch.googlecode.com/hg/betterbatch/docs/index.html

Discuss BetterBatch on the mailing list: http://groups.google.com/group/betterbatch-discuss/topics

Here is a BetterBatch script that shows many of the features:

# this sets the log file. The log file CAN be changed 
# during execution (logfile can use variables defined in file 
# as opposed to includes)
- logfile <__script_dir__>\test_bb.log

# the following two 'pseudo' variables allow you to 
# get directory where the script is and the directory
# from which the script was executed.
- echo __script_dir__ pseudo variable-  <__script_dir__>
- echo __working_dir__ pseudo variable- <__working_dir__>

# betterbatch pulls in the environment variables so that these can be used
# by better batch
- echo <computername>

# for example this would be a good way to include machine specific 
# configuration
- if exist <computername>.bb:
  - include <computername>.bb

# or user specific configuration
- if exist <username>.bb:
  - include <username>.bb

# you can define your own variables
- set project_root=<__script_dir__>


# Note - include statements cannot use variables defined in the script (because 
# includes are executed before variable definitions statements are)
- include <__script_dir__>\betterbatch\tests\test_files\basic.bb

# this will not work for example because <project_root> is
# not defined by the time the include will be executed
#- include <project_root>\betterbatch\tests\test_files\basic.bb


# change 0 to 1 to test
- if compare 1 = 0:
    # because of the 'ui' qualifier the output of this command will not 
    # be captured because of the 'nocheck' qualifier the return value will
    # not be checked (so you can CTRL+C)
    - dir c:\ /s /p {*ui*} {*nocheck*}

# example of channging the logfile
- logfile <project_root>\test_bb2.log

# finally you can pass in variables on the command line:
# the following section will only be run if you pass something like:
#    perform_section=true at the command line
- if defined perform_section:
    - echo ************************************************
    - echo YOU PASSED SOMETHING AT THE COMMAND LINE
    - echo ************************************************


# qualifiers modify how the command is executed, qualifiers are:
# {*ui*}, {*nocheck*} and {*echo*}
#  ui      - does not capture the text, so the user can work with 
#            the output interactively
#  nocheck - does not check the return value - so even if it fails 
#            errors will be ignored
#  echo    - output will be echoed
# It doesn't make sense to have echo + ui
- cd non_existing_directory {*nocheck*} {*echo*}  


# add_tools_folder will make the executable programs in the specified folder
# availabe in the script without requing path or extension
- add_tools_folder c:\  # you a folder on your machine or in your config


# you can assign variables to the output of commands
# it can be multiline text there is a utility built in command to 
# replace new lines (\r\n)
- set boot.ini = {{{type c:\boot.ini}}}
- set boot.ini.one_line = {{{EscapeNewlines <boot.ini>}}}
- echo <boot.ini.one_line>

# the code within an {{{executable section}}} can include any shell
# command or any built_in commands. There can be more than one on a line
# But they cannot be embedded (on the same line - if you need to embed - you
# can do that by using a temporary variable)
- set dir_to_search = {{{echo <windir>}}}
- set found = {{{dir <dir_to_search>\win.ini}}} {{{cd nowhere {*nocheck*}{*echo*}}}}


# commands can be split over many lines in two ways
# using either > or | characters

# > character will result in all text being on one line
- >
    set long_greater=different
    values here
      and here
      
- echo <long_greater>

# | character will result in all text being on many lines (i.e. it is only
# it is kept as is with leading space stripped
- |
    set long_pipe=different
    values here
      and here


- set escaped = {{{escapenewlines <long_pipe>}}}
- echo <escaped>

# scrpits can be ended at any, using an END statment
# it must include error return value and can include an optional message
- end 0, Enough for now - stopping
Powered by Google Project Hosting