diff --git a/cli_bilby/bilby_result.py b/cli_bilby/bilby_result.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa0ea0f18835c51a782252807fafa16f50602498
--- /dev/null
+++ b/cli_bilby/bilby_result.py
@@ -0,0 +1,99 @@
+""" A command line interface to ease the process of batch jobs on result files
+
+Examples
+--------
+To convert all the JSON result files in `outdir` to hdf5 format:
+
+    $ bilby_result -r outdir/*json -c hdf5
+
+Note, by default this will save the new files in the outdir defined within the
+results files. To give a new location, use the `--outdir` argument.
+
+To print the version and `log_evidence` for all the result files in outdir:
+
+    $ bilby_result -r outdir/*json --print version log_evidence
+
+To generate a corner plot for all the files in outdir
+
+    $ bilby_result -r outdir/*json --call plot_corner
+
+This is effectively calling `plot_corner()` on each of the result files
+individually. Note that passing extra commands in is not yet implemented.
+
+"""
+import argparse
+import pandas as pd
+
+import bilby
+
+
+def setup_command_line_args():
+    parser = argparse.ArgumentParser(
+        description="Helper tool for bilby result files",
+        epilog=print(__doc__))
+    parser.add_argument("-r", "--results", nargs='+', required=True,
+                        help="List of results files.")
+    parser.add_argument("-c", "--convert", type=str, choices=['json', 'hdf5'],
+                        help="Convert all results.", default=False)
+    parser.add_argument("-o", "--outdir", type=str, default=None,
+                        help="Output directory.")
+    parser.add_argument("-b", "--bayes", action='store_true',
+                        help="Print all Bayes factors.")
+    parser.add_argument("-p", "--print", nargs='+', default=None,
+                        help="Result dictionary keys to print.")
+    parser.add_argument("--call", nargs='+', default=None,
+                        help="Result dictionary methods to call (no argument passing available).")
+    parser.add_argument("--ipython", action='store_true',
+                        help=("For each result given, drops the user into an "
+                              "IPython shell with the result loaded in"))
+    args, _ = parser.parse_known_args()
+
+    return args
+
+
+def read_in_results(filename_list):
+    results_list = []
+    for filename in filename_list:
+        results_list.append(bilby.core.result.read_in_result(filename=filename))
+    return results_list
+
+
+def print_bayes_factors(results_list):
+    print("\nPrinting Bayes factors:")
+    N = len(results_list)
+    for i, res in enumerate(results_list):
+        print("For label={}".format(res.label))
+        index = ['noise'] + [results_list[j].label for j in range(i + 1, N)]
+        data = [res.log_bayes_factor]
+        data += [res.log_evidence - results_list[j].log_evidence for j in range(i + 1, N)]
+        series = pd.Series(data=data, index=index, name=res.label)
+        print(series)
+
+
+def drop_to_ipython(results_list):
+    for result in results_list:
+        message = "Opened IPython terminal for result {}".format(result.label)
+        message += "\nBilby result loaded as `result`"
+        import IPython
+        IPython.embed(header=message)
+
+
+def main():
+    args = setup_command_line_args()
+    results_list = read_in_results(args.results)
+    if args.convert:
+        for r in results_list:
+            r.save_to_file(extension=args.convert, outdir=args.outdir)
+    if args.print is not None:
+        for r in results_list:
+            print("\nResult file: {}/{}".format(r.outdir, r.label))
+            for key in args.print:
+                print("  {}: {}".format(key, getattr(r, key, 'None')))
+    if args.call is not None:
+        for r in results_list:
+            for call in args.call:
+                getattr(r, call)()
+    if args.bayes:
+        print_bayes_factors(results_list)
+    if args.ipython:
+        drop_to_ipython(results_list)
diff --git a/setup.py b/setup.py
index d63e99266200091599dd6fc25ee419d20cac3d92..c7a3f577f588989fe1e967b2cc06b659c7ffd87c 100644
--- a/setup.py
+++ b/setup.py
@@ -85,7 +85,8 @@ setup(name='bilby',
           'pandas',
           'scipy'],
       entry_points={'console_scripts':
-                    ['bilby_plot=cli_bilby.plot_multiple_posteriors:main']
+                    ['bilby_plot=cli_bilby.plot_multiple_posteriors:main',
+                     'bilby_result=cli_bilby.bilby_result:main']
                     },
       classifiers=[
           "Programming Language :: Python :: 2.7",