The following sample scripts show how Beyond Compare can use scripts. You can either use these scripts as-is or model your own scripts after them.
Here is a basic script that copies all of the newer and orphaned files from one folder to another, using a previously created session:
load "Sync Laptop"
sync update:left->right
Syncing two folders
Here is a more advanced script that syncs two specific folders using advanced filters. This works the same as loading the folders in a Folder Compare session and performing a "Mirror Left to Right" folder synchronization.
# Turn logging on.
log normal "C:\My Log.txt"
# Load the default session and exclude all but certain file types.
load <default>
filter "*.html;*.htm;*.png;*.jpg"
# Load the base folders.
load "C:\My Folder" ftp://user@website.com/folder
# Copy different files left to right, delete orphans on right.
sync mirror:left->right
Comparing two files by name
This script compares two files by name.
file-report layout:side-by-side &
options:display-mismatches &
output-to:"%3" "%1" "%2"
A sample command line, calling the above script:
BCompare.exe @"My Script.txt" "My File.txt" "Your File.txt" "My Report.txt"
Note An ampersand (&) at the end of a line means that the command continues on the next line.
Note %1, %2, and %3 refer to the 1st, 2nd and 3rd command line argument, respectively.
Generating a report
This script compares two files by name and generates an html report showing differences with context:
text-report layout:side-by-side &
options:ignore-unimportant,display-context &
output-to:"%3" output-options:html-color "%1" "%2"
Keeping a web site in sync
This script keeps a web site in sync with development files.
# Turn verbose logging on.
log verbose append:"C:\My Log.txt"
# Set the comparison criteria.
criteria timestamp size
# Load source and target folders.
load "C:\My Folder" ftp://user@website.com/folder
# Filter to only include source files, ignore CVS subfolders.
filter "*.htm;*.html;*.php;*.jpg;*.gif;-CVS\"
# Sync the local files to the web site, creating empty folders.
sync create-empty mirror:left->right
Performing a rules-based comparison and logging results to a file
This script logs the script results to a file that uses the current date as part of the name. The variable %date% is expanded by the script in the format 2012-12-31 on U.S. English systems, on other systems it will match the system locale. It performs a rules-based comparison of Pascal source files and generates a report of mismatches.
# Log to a file of the form "C:\My Log 2012-12-31.txt".
# The exact format depends on your regional and language settings.
log verbose append:"C:\My Log %date%.txt"
# Compare the text contents of the files.
criteria rules-based
# Only compare Delphi source files, ignore the archive folder.
filter "*.pas;*.dfm;*.dpr;*.inc;-archive\"
load "C:\My Folder" "C:\Your Folder"
folder-report layout:summary &
options:display-mismatches,column-attributes,column-timestamp,column-size &
output-to:"My Report.txt"
Comparing current folder state to a snapshot
This script compares the current state of a folder to a snapshot from the last time updates were sent out. Then it copies the changed and new files to an archive file and updates the snapshot of the folder.
option confirm:yes-to-all
# Compare using crc.
criteria crc
# Load current files against snapshot from the last patch.
load "C:\My Folder" "C:\My Snapshot.bcss"
# Expand to affect subfolders and files.
expand all
# Select updated files.
select left.diff.files left.orphan.files
# Copy changes to an archive file.
copyto left path:relative "C:\My Archive.zip"
# Update the snapshot.
snapshot save-crc left output:"C:\My Snapshot.bcss"
Generating a report of differences
This script generates a report of only differences.
# Set up basic comparison features.
criteria timestamp:2sec
# Filter out log files.
filter "-*.log"
# Load first comparison.
load "C:\My Folder" "C:\Your Folder"
# Compare files with timestamp differences.
select newer.files older.files
# Generate a report of the differences.
folder-report layout:summary options:display-mismatches output-to:"C:\My Report.txt"