{"id":1124,"date":"2009-01-27T19:03:11","date_gmt":"2009-01-27T10:03:11","guid":{"rendered":"https:\/\/regex.info\/blog\/lightroom-goodies\/run-any-command"},"modified":"2009-01-27T19:03:11","modified_gmt":"2009-01-27T10:03:11","slug":"run-any-command","status":"publish","type":"page","link":"https:\/\/regex.info\/blog\/lightroom-goodies\/run-any-command","title":{"rendered":"Jeffrey&#8217;s &#8220;Run Any Command&#8221; Lightroom Export Plugin"},"content":{"rendered":"\n\n<style>\n  .with_lhs li { margin-left: 212px }\n\n  div.post_header { margin-left: 216px }\n  #navtab-holder {\n        color: #84F;\n        float:left;\n        position: relative;\n        background-color: black;\n        border-right: solid 2px #888888;\n        top: -44px;\n\n        width: 250px;\n        right: 60px;\n        margin-right: -30px; \/* the main page layout is based upon the unshifted width of the navtab-holder, so this compensates for the right:60px shift *\/\n\n  }\n  #navtab-holder a[href]:visited { color: #84F; text-decoration:none  }\n  #navtab-holder a[href]:link    { color: #84F; text-decoration:none }\n  div.navtab-topbottom {\n       width: 207px;\n       margin-left: 43px;\n       height: 10px;\n  }\n  #navtab-bottom {\n      border-bottom: solid 2px #888888;\n  }\n  div.navtab-list {\n    border: 3px solid #0B0;\n    background-color: #040;\n    padding-left: 10px;\n    margin-right: 10px;\n    -moz-border-radius:    15px;\n    -webkit-border-radius: 15px;\n  }\n\n  div.nav-header {\n      color:white;\n      padding-top: 15px;\n      padding-bottom: 3px;\n      text-align: left;\n      font-weight: bold;\n  }\n  div.sel {\n      margin: 0;\n      padding: 1px;\n  }\n  div.N {\n  }\n  div.post_container {\n    background-color: #181818;\n  }\n\n  div.Y {\n      border: solid 2px #888888;\n      border-right: none;\n      background-color: #181818;\n      font-weight: bold;\n      color: red;\n      overflow:visible;\n      position: relative;\n      z-index: 3;\n      width: 235px;\n      -moz-border-radius:    15px 0 0 15px;\n      -webkit-border-radius: 15px 0 0 15px;\n  }\n  div.sel + div.I { padding-top: 20px }\n  div.sel > div {\n      -moz-border-radius:    15px 0 0 15px;\n      -webkit-border-radius: 15px 0 0 15px;\n      padding: 2px 0 2px 10px;\n      margin: 0 0 5px 0;\n  }\n  div.N > div {\n      border: 2px solid black;\n  }\n  div.N > div {\n      margin-right: 20px;\n      background-color: #222;\n  }\n\n  div.Y + div.N > div { margin-top: 10px }\n\n  div.logo { width: 30px; display: inline-block }\n\n  #arrow {\n    display: inline-block;\n    width: 0px;\n    position:relative;\n    top:5px;\n    left:10px\n  }\n\n<\/style>\n\n\n<div id='navtab-holder'>\n<div class='navtab-topbottom' id='navtab-top'><\/div>\n\n<div class='nav-header' style='text-align:center; color:white'>My Lightroom Plugin for Adobe Photoshop Lightrooms&nbsp;<\/div>\n<div class='navtab-list'>\n<div class='nav-header'>Export &amp; Publish<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/zenfolio'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/zenfolio'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_zenfolio.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/zenfolio'>Zenfolio<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smugmug'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/smugmug'><img noindex='1' width='14' height='15' style='margin-left: 5px' class='raw' src='\/i\/lr\/sm\/small_smugmug.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/smugmug'>SmugMug<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/flickr'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/flickr'><img noindex='1' width='24' height='12' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_flickr.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/flickr'>Flickr<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/google-drive'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/google-drive'><img noindex='1' width='19' height='19' style='margin-left: 3px' class='raw' src='\/i\/lr\/sm\/small_googledrive.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/google-drive'>Google Drive<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/ipernity'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/ipernity'><img noindex='1' width='14' height='18' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_ipernity.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/ipernity'>ipernity<\/a><\/div><\/div>\n<div class='nav-header'>Export Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/google-photos'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/google-photos'><img noindex='1' width='18' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_gphotos.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/google-photos'>Google Photos<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/tumblr'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/tumblr'><img noindex='1' width='19' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_tumblr.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/tumblr'>Tumblr<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/twitter'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/twitter'><img noindex='1' width='23' height='16' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/twitter_small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/twitter'>Twitter<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/photobucket'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/photobucket'><img noindex='1' width='20' height='15' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_photobucket.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/photobucket'>Photobucket<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/order-prints-locally'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/order-prints-locally'>Order Prints Locally<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/expono'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/expono'>Expono<\/a><\/div><\/div>\n<div class='nav-header'>Other Publish Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/collection-publisher'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/collection_publisher_small_icon.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/collection-publisher'>Collection Publisher<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-publisher'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/folder-publisher'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/folder-publisher-icon-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/folder-publisher'>Folder Publisher<\/a><\/div><\/div>\n<div class='nav-header'>Export Add-Ons<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-wrangler'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-wrangler'>Metadata Wrangler<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/creative-commons'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/creative-commons'>Creative Commons<\/a><\/div><\/div>\n<div class='sel Y' onmouseover=\"this.style.borderColor=document.getElementById('post_guts').style.borderColor=document.getElementById('navtab-holder').style.borderColor=document.getElementById('navtab-top').style.borderColor=document.getElementById('navtab-bottom').style.borderColor= 'red'; this.style.backgroundColor = document.getElementById('post_guts').style.backgroundColor = '#333'\" onmouseout =\"this.style.borderColor=document.getElementById('post_guts').style.borderColor=document.getElementById('navtab-holder').style.borderColor=document.getElementById('navtab-top').style.borderColor=document.getElementById('navtab-bottom').style.borderColor= '#888888'; this.style.backgroundColor = document.getElementById('post_guts').style.backgroundColor = '#181818';\"><div>Run Any Command <div id='arrow'><img noindex='1' class='raw'  src='\/i\/s\/red-arrow-right.png' width='48' height='25'\/><\/div><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/snapshot-on-export'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/snapshot-on-export'>Snapshot on Export<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smart-preview-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/smart-preview-support'>Smart-Preview Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/crop-for-ipad'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/crop-for-ipad'>Crop for iPad and other Devices<\/a><\/div><\/div>\n<div class='nav-header'>Geoencoding Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/gps'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/gps'>Geoencoding Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/gps-proximity'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/gps-proximity'>Proximity Search<\/a><\/div><\/div>\n<div class='nav-header'>Utility Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/data-explorer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/data-explorer'>Data Explorer<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smart-collection-sync'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/smart-collection-sync'>Smart Collection Sync<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/people-support'>People Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-status'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/folder-status'>Folder Status<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/photosafe'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/photosafe'><img noindex='1' width='18' height='19' style='margin-left: 6px' class='raw' src='\/i\/lr\/sm\/photosafe-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/photosafe'>PhotoSafe<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-mechanic'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/collection-mechanic'>Collection Mechanic<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/bag-o-goodies'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/bag-o-goodies'>Bag-o-Goodies<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/timelapse-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/timelapse-support'>Timelapse Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/workflow-delete-options'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/workflow-delete-options'><img noindex='1' width='15' height='19' style='margin-left: 6px' class='raw' src='\/i\/lr\/sm\/workflow-delete-options-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/workflow-delete-options'>Workflow Delete Options<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-viewer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-viewer'>Metadata Viewer<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/bulk-develop'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/bulk-develop'>Bulk Develop Settings<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-presets'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-presets'>Metadata-Viewer Preset Builder<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/layers'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/layers'>Photoshop Layers<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/export-quality-tester'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/export-quality-tester'>JPEG Quality Tester<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-watch'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/folder-watch'>Folder Watch<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/megapixel-sort'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/megapixel-sort'>Megapixel Sort<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/focal-length-sort'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/focal-length-sort'>Focal-length Sort<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/data-plot'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/data-plot'>Data Plot<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/extended-search'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/extended-search'>Extended Search<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/video-assets'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/video-assets'>Video-Asset Management<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/preview-extraction'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/preview-extraction'>Preview-Cache Image Extraction<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/sysinfo'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/sysinfo'>System Info<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/iphoto-collection-fixer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/iphoto-collection-fixer'>iPhoto Collection Fixer<\/a><\/div><\/div>\n<\/div>\n<div style='margin-top:20px; margin-left:15px; margin-bottom:10px'>\n<b>Other Plugin Sources:<\/b>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.photographers-toolbox.com\/products\/'>Photographer's Toolbox<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/alloyphoto.com\/plugins\/'>alloy photo<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.beardsworth.co.uk\/lightroom\/'>John Beardsworth<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.capturemonkey.com\/'>Capture Monkey<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.lightroom-plugins.com\/'>lightroom-plugins.com<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='https:\/\/creative.adobe.com\/addons?pp=PSLR'>Adobe Addons<\/a>\n\n<\/div>\n\n<div class='navtab-topbottom' id='navtab-bottom'><\/div>\n<\/div>\n\n\n\n<div style='float:right; position:relative; border: solid 1px #444; margin: 0 auto; margin-left:2em; padding:20px; padding-top:5px; background-color: #000'>\n<center style='font-weight:bold; font-size:120%'>Quick Links<\/center>\n     &middot; <b>Latest Download<\/b>:\n<br\/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/releases\/run-any-command-20220816.121.zip'><span style='padding:1px 3px; border:solid 1px orange; color:#888'>run-any-command-<span style='color:orange; font-weight:bold'>20220816.121<\/span>.zip<\/span><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/faq'>FAQ<\/a>\n<br\/>&middot; <a class='quiet' href='#history'>Version History<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/run-any-command.rss'>Update Log via RSS <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/plugin-installation\/'>Installation instructions<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/register'>&#8220;Donationware&#8221; Registration Info<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/' style='color:#F55'>More Lightroom Goodies<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/all.rss'>All-Plugin Update Log via RSS <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/photo-tech\/'>My Photo-Tech Posts<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog'>My Blog<\/a>\n<\/div>\n\n\n<p>This plugin for Adobe Lightroom Classic provides four separate (but sort of related) functions:<\/p>\n\n<p><b>1)<\/b> It provides an <span class='QO'>&#8220;<\/span>export filter<span class='QC'>&#8221;<\/span> that allows you to run\n<span class='nobr'>a command<\/span> of your choosing with each exported image copy, as part of the export while its going\non.<\/p>\n\n<p><b>2)<\/b> In the export filter, you can also apply <span class='nobr'>a command<\/span> to all exported image copies as <span class='nobr'>a group,<\/span> after\nthe last one has been rendered.<\/p>\n\n<p><b>3)<\/b> In the export filter, you can also have processed photos added to <span class='nobr'>a normal<\/span> collection and\/or <span class='nobr'>a publish<\/span> collection,\nand can optionally invoke <span class='nobr'>a Publish<\/span> operation on <span class='nobr'>a publish<\/span> collection or <span class='nobr'>a full<\/span> publish service.<\/p>\n\n<p style='margin-bottom:50px'><b>4)<\/b> Via <span class='nobr'>a new<\/span> entry to the <span class='QO'>&#8220;<\/span>File &gt; Plugin Extras<span class='QC'>&#8221;<\/span> menu, it lets you apply <span class='nobr'>a command<\/span> of your choosing\non the master image files selected in Library.<\/p>\n\n<p>This plugin works in Lightroom Classic, and older versions as far back as\n<span class='nobr'>Lightroom 3<\/span>, though some features depend on the\nversion of Lightroom.<\/p>\n\n<p>The same download works for both Windows and Mac. <span class='nobr'>See the box<\/span> to the upper right for the download link (in orange) and installation instructions.<\/p>\n\n\n<p class='h'>Export-Filter Features<\/p>\n\n<p>This plugin includes an <span class='QO'>&#8220;<\/span><b>export filter<\/b><span class='QC'>&#8221;<\/span> that provides access\nto the rendered copy of an image being exported, during the export. <span class='nobr'>It can be<\/span> used with any export or publish service, whether built into to Lightroom or provided by <span class='nobr'>a plugin.<\/span><\/p>\n\n<p>The plugin adds a section to the Export\/Publish dialog like this:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/run-any-command-filter-dialog.png\" width=\"553\" height=\"760\"\nclass=\"raw\"\nid=\"irun_any_command_filter_dialog\"\/><\/div>\n\n<p>The top half is for the command to be executed during each image's render, while the bottom box is for the\nafter-all-have-been-processed actions. <span class='nobr'>You can use<\/span> any or all parts that suit your workflow.<\/p>\n\n<p class='h'>When Things Happen<\/p>\n\n<p>It's important to understand when during the export\/publish operation this plugin's actions are taken,\nespecially in th face of errors <span class='QO'>&#8220;<\/span>downstream<span class='QC'>&#8221;<\/span> from this plugin.<\/p>\n\n<p>The per-image command, if you have one, is executed during the export operation at the point where it appears in the dialog.\n<span class='nobr'>In a complex<\/span> export involving many filters (such as, for example, <a\nhref='\/blog\/lightroom-goodies\/metadata-wrangler'>my Metadata Wrangler<\/a> and\/or <a\nhref='http:\/\/www.photographers-toolbox.com\/products\/lrmogrify2.php'>LR\/Mogrify<\/a>), the ordering can have <span class='nobr'>a\nmaterial<\/span> impact, depending on what you're doing in the command. For example, if you're using the command to send <span\nclass='nobr'>a backup<\/span> copy somewhere, the copy you're backing up is the pre-Metadata-Wrangler version if this plugin\nappears in the export dialog above the Metadata Wrangler, and the post-Wrangler version if below.<\/p>\n\n<p>It's also important to realize that an export can ultimately fail even if it passes this plugin successfully. <span\nclass='nobr'>If the prior<\/span> example is all within, say, an <a href='\/blog\/lightroom-goodies\/facebook'>Export\nto Facebook<\/a> operation, the export will ultimately fail if there is no network connectivity. <span class='nobr'>If the\ncommands<\/span> you had the plugin invoked did things like keeping backups or somehow marking <span class='nobr'>a\ndatabase,<\/span> you've now done these things for images that ultimately did not finish exporting. <span class='nobr'>It's an\nimportant<\/span> consideration, depending on the nature of the commands.<\/p>\n\n<p>In particular, the <a href='#coll'>add-to-collection features<\/a> happen after this plugin processes the final image of the\nexport, and if the final steps of the export end up failing for some images, those images still remain in the added-to\ncollections. <span class='nobr'>If those<\/span> collections were intended to be the full set of, say, <span class='nobr'><span\nclass='QO'>&#8220;<\/span>images uploaded to ....<span class='QC'>&#8221;<\/span><\/span>, in the face of such errors you'll end up\nwith images in the collection that shouldn't be there.<\/p>\n\n<p>So, depending on your workflow, take care with these features when you have export errors.<\/p>\n\n<p class='h'>Command Metasequences<\/p>\n\n<p>Before a command is actually executed, special token sequences are\nrecognized and replaced by the plugin. For example, the token\n<span class='QO'>&#8220;<\/span><b>{desktop}<\/b><span class='QC'>&#8221;<\/span> is replaced by the full path to the user's Desktop folder.<\/p>\n\n<p>The set of tokens recognized depends on the situation.<\/p>\n\n<p><b>The per-image <span class='QO'>&#8220;<\/span>Command to Execute<span class='QC'>&#8221;<\/span> command<\/b> supports\nall the general tokens of my plugins' <a\nhref='\/blog\/lightroom-goodies\/template'>preset\ntemplates<\/a>, so you can use\nimage-specific metadata on your command line.<\/p>\n\n<style type=\"text\/css\">\ntable#t699  tr { vertical-align: baseline }\ntable#t699  th { border-bottom: solid 1px #888; text-align:left}\ntable#t699b tr { vertical-align: baseline }\ntable#t699b th { border-bottom: solid 1px #888; text-align:left }\n\n<\/style>\n\n<p>In addition to those tokens, the following are\nalso recognized within this command:<\/p>\n<table id='t699' cellpadding='5' style='margin-left:5em' cellspacing='0'>\n<tr><th class='h'>Sequence<\/th><th class='h'>Replaced By<\/th><\/tr>\n<tr><td><tt>{FILE}<\/tt><\/td><td>The filename of the exported image copy, with full path.<\/td><\/tr>\n<tr><td><tt>{file}<\/tt><\/td><td>The filename of the exported image copy, without the leading path.<\/td><\/tr>\n<tr><td><tt>{NAME}<\/tt><\/td><td>The filename of the exported image copy, with full path, but without the file extension.<\/td><\/tr>\n<tr><td><tt>{name}<\/tt><\/td><td>The filename of the exported image copy, without the leading path and without the file extension.<\/td><\/tr>\n<tr><td><tt>{folder}<\/tt>   <\/td><td>The folder part of <tt>{FILE}<\/tt><\/td><\/tr>\n\n\n<tr><td><tt>{ExportedByteSize}<\/tt>   <\/td><td>The size of <tt>{FILE}<\/tt>, in bytes (e.g. <span class='QO'>&#8220;<\/span>347264<span class='QC'>&#8221;<\/span>)<\/td><\/tr>\n<tr><td><tt>{ExportedFileSize}<\/tt>   <\/td><td>The size of <tt>{FILE}<\/tt>, in <span class='nobr'>a human<\/span>-readable way (e.g. <span class='QO'>&#8220;<\/span>339.1 KB<span class='QC'>&#8221;<\/span>)<\/td><\/tr>\n\n\n\n<tr><td><tt>{home}<\/tt>     <\/td><td>Full path of the user-dependent <span class='QO'>&#8220;<\/span>home<span class='QC'>&#8221;<\/span> folder.<\/td><\/tr>\n<tr><td><tt>{desktop}<\/tt>  <\/td><td>Full path of the user-dependent <span class='QO'>&#8220;<\/span>Desktop<span class='QC'>&#8221;<\/span> folder.<\/td><\/tr>\n<tr><td><tt>{pictures}<\/tt> <\/td><td>Full path of the user-dependent picture folder (<span class='QO'>&#8220;<\/span>My Pictures<span class='QC'>&#8221;<\/span> or <span class='QO'>&#8220;<\/span>Pictures<span class='QC'>&#8221;<\/span>).<\/td><\/tr>\n<tr><td><tt>{documents}&nbsp;&nbsp;<\/tt><\/td><td>Full path of the user-dependent document folder (<span class='QO'>&#8220;<\/span>My Documents<span class='QC'>&#8221;<\/span> or <span class='QO'>&#8220;<\/span>Documents<span class='QC'>&#8221;<\/span>).<\/td><\/tr>\n<tr><td><tt>{temp}<\/tt>     <\/td><td>Full path of <span class='nobr'>a system<\/span>-dependent temporary folder.<\/td><\/tr>\n<\/table>\n\n\n<p style='margin-top:50px'><b>The overall <span class='QO'>&#8220;<\/span>Command to execute upon completion<span class='QC'>&#8221;<\/span> command<\/b> supports the following tokens:<\/p>\n<table id='t699b' cellpadding='5' style='margin-left:5em' cellspacing='0'>\n<tr><th class='h'>Sequence<\/th><th class='h'>Replaced By<\/th><\/tr>\n<tr><td><tt>{FILES}<\/tt>  <\/td><td>The full path of all images rendered for the export, each surrounded by double quotes, separated by spaces.<\/td><\/tr>\n<tr><td><tt>{qFILES}<\/tt> <\/td><td>The full path of all images rendered for the export, each surrounded by single quotes, separated by spaces.<\/td><\/tr>\n<tr><td><tt>{xFILES}<\/tt> <\/td><td>The full path of all images rendered for the export separated by spaces.<\/td><\/tr>\n<tr><td><tt>{COUNT}<\/tt>    <\/td><td>The count of images rendered for the export.<\/td><\/tr>\n<tr><td><tt>{MANIFEST}<\/tt> <\/td><td><span class='nobr'>A temporary<\/span> file that includes the full path of all images rendered for the export, one per line. (The temporary file is deleted by the plugin after the command has executed.)<\/td><\/tr>\n<tr><td><tt>{home}<\/tt>     <\/td><td>Full path of the user-dependent <span class='QO'>&#8220;<\/span>home<span class='QC'>&#8221;<\/span> folder.<\/td><\/tr>\n<tr><td><tt>{desktop}<\/tt>  <\/td><td>Full path of the user-dependent <span class='QO'>&#8220;<\/span>Desktop<span class='QC'>&#8221;<\/span> folder.<\/td><\/tr>\n<tr><td><tt>{pictures}<\/tt> <\/td><td>Full path of the user-dependent picture folder (<span class='QO'>&#8220;<\/span>My Pictures<span class='QC'>&#8221;<\/span> or <span class='QO'>&#8220;<\/span>Pictures<span class='QC'>&#8221;<\/span>).<\/td><\/tr>\n<tr><td><tt>{documents}&nbsp;&nbsp;<\/tt><\/td><td>Full path of the user-dependent document folder (<span class='QO'>&#8220;<\/span>My Documents<span class='QC'>&#8221;<\/span> or <span class='QO'>&#8220;<\/span>Documents<span class='QC'>&#8221;<\/span>).<\/td><\/tr>\n<tr><td><tt>{temp}<\/tt>     <\/td><td>Full path of <span class='nobr'>a system<\/span>-dependent temporary folder.<\/td><\/tr>\n<\/table>\n\n\n<p class='h'>Command Quoting<\/p>\n\n<p>You must be <i>very<\/i> careful about where to quote items in the command lines you enter in the plugin: anything that has\n<span class='nobr'>a space<\/span> or other special shell variables must be quoted, but exactly what must be quoted, when, and with\nwhat kind of quotes is dependent on the operating system. <span class='nobr'>It's fairly<\/span> straightforward on <span\nclass='nobr'>a Mac<\/span>: single quotes will almost always be okay, double quotes probably okay in most cases as well. On\nWindows, use double quotes and cross your fingers.<\/p>\n\n<p>Never use <span class='QO'>&#8220;<\/span>smart quotes<span class='QC'>&#8221;<\/span>, like the ones in this sentence surrounding the phrase <span class='QO'>&#8220;<\/span>smart quotes<span class='QC'>&#8221;<\/span>.\nOnly use the old-style ASCII\n\n   <span class='nobr'>single <span class='subtle'>( <\/span>&#39;<span class='subtle'> )<\/span><\/span>\nand\n\n   <span class='nobr'>double <span class='subtle'>( <\/span>&#34;<span class='subtle'> )<\/span><\/span>\n\nquotes.<\/p>\n\n<p>You'll probably end up using <tt class='t'>&#34;{FILE}&#34;<\/tt>\n(or, on <span class='nobr'>a Mac,<\/span> <tt class='t'>&#39;{FILE}&#39;<\/tt>) in every command.<\/p>\n\n<p>Here's a concrete example using Phil Harvey's most-excellent <a\nhref='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>exiftool<\/a> to insert\n<span class='nobr'>a copyright<\/span> notice into the jpeg image-comment field. Here it is for Windows:<\/p>\n\n<pre>\"<span class='arg'>C:\\path\\to\\exiftool.exe<\/span>\"   <span class='arg'>-overwrite_original<\/span>    \"<span class='arg'>-Comment=Copyright {yyyy} {Artist}<\/span>\"    \"<span class='arg'>{FILE}<\/span>\"<\/pre>\n\n<p>And on a Mac:<\/p>\n\n<pre><span class='arg'>'\/path\/to\/my\/exiftool'<\/span>     <span class='arg'>-overwrite_original<\/span>     '<span class='arg'>-Comment=Copyright {yyyy} {Artist}<\/span>'    '<span class='arg'>{FILE}<\/span>'<\/pre>\n\n<p>Each uses the <b>{FILE}<\/b> token with appropriate quotes, and also two preset-template tokens.<\/p>\n\n<p class='h'>Logging<\/p>\n\n<p>Details about each command executed and its results are kept in the\nplugin log, which is referenced in the upper-right section of the Plugin\nManager.<\/p>\n\n<p class='h' id='coll'>Collections and Publishing<\/p>\n\n<p>After the last photo has been processed, you can have all processed photos added to <span class='nobr'>a regular<\/span> collection and\/or <span class='nobr'>a publish<\/span>\ncollection, and can optionally have <span class='nobr'>a Publish<\/span> operation invoked on <span class='nobr'>a publish<\/span> collection.<\/p>\n\n<p>Take care not to create a never-ending circular publish chain. <span class='nobr'>If you add<\/span> this plugin to two separate Publish Services, and in\neach configure this plugin to auto-publish the other publish service, you could destroy the known universe. Please don't do\nthat.<\/p>\n\n<p class='h' id='config'>The <span class='QO'>&#8220;<\/span>Plugin-Extras<span class='QC'>&#8221;<\/span> Extras<\/p>\n\n<p>The plugin provides a way to execute <span class='nobr'>a command<\/span> with the master image file for currently-selected photos.\nSelect the photos and invoke\n<span class='nobr'><span class='QO'>&#8220;<\/span>File &gt; Plugin Extras...<span class='QC'>&#8221;<\/span><\/span>\nand you'll see four options for this plugin:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/run-any-command-extras-menu.png\" width=\"300\" height=\"122\"\nclass=\"raw\"\nid=\"irun_any_command_extras_menu\"\/><\/div>\n\n<p>Initially, only the first has meaning, and it brings up <span class='nobr'>a dialog<\/span> where you can configure\nup to three custom commands:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/run-any-command-config-dialog.png\" width=\"553\" height=\"207\"\nclass=\"raw\"\nid=\"irun_any_command_config_dialog\"\/><\/div>\n\n<p>Once a custom command is configured, you can then invoke it through the Plugins-Extra menu.<\/p>\n\n<p class='h'>Availability<\/p><p>This plugin is distributed as &#8220;donationware&#8221;. I have chosen to make it available for free &mdash; everyone can use\nit forever, without cost of any kind &mdash; but unless registered, its functionality is somewhat reduced after six weeks.<\/p>\n\n<p>Registration is done via PayPal, and if you choose to register, it costs the minimum 1-cent PayPal fee; any amount you'd like\nto add beyond PayPal's sliding fees as a gift to me is completely optional, and completely appreciated.<\/p>\n\n<p id='majorupgrade'><b>Note<\/b>: a Lightroom <i>major<\/i> upgrade, such as from Lr10 to Lr11 de-registers the plugin in the\nupgraded version, so if you want to maintain registration, a new ($0.01 if you like) registration code is needed in the upgraded\nversion. It makes for a hassle every couple of years, I know. Sorry. See <a\nhref='\/blog\/lightroom-goodies\/register#major-upgrade'>this note<\/a> for details.<\/p>\n\n<p>For details on plugin registration and on how I came into this hobby of Lightroom plugin development, see my <a\nhref='\/blog\/lightroom-goodies\/register'>Plugin Registration page<\/a>.<\/p>\n\n\n<style type=\"text\/css\">\n  #post1124 .t {\n       background-color:#222;\n       padding:3px 5px;\n       color: white\n  }\n  #post1124 pre { margin-left: 3em }\n  #post1124 .arg       { border: solid 1px #181818 }\n  #post1124 .arg:hover { border: solid 1px black  ; color:white; background-color:#444  }\n\n<\/style>\n\n<style type=\"text\/css\">\n   table.h td:first-child   { font-weight: bold; padding-right:1em }\n   table.h td p:first-child { margin-top: 0 }\n   table.h td               { padding-bottom: 10px }\n   p.h                      { font-weight:bold; font-size:130%; margin-top:50px }\n   span.h                   { font-weight:bold; font-size:130%; margin-top:50px }\n   table.h pre              { font-size: 70% }\n<\/style>\n<p id='history' style='margin-top:50px'><span class='h'>Version History<\/span>\n<br\/>\n(\n<a style='font-size:small'\n   class='quiet'\n   href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/run-any-command.rss'>Update Log via RSS\n   <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n)<\/p>\n<table class='h'><tr valign='baseline'><td><a id='20220816.121' name='121'>20220816.121<\/a><\/td><td>\n<p>Play whack-a-mole with Lightroom's handling of margins in dialogs, trying to avoid having the edge of dialog items cut off.<\/p>\n\n                <p>Change the prose to make it clear that the \"add to collection\" stuff refers to images selected for output, and not the outputted copies.<\/p>\n                <p>Removed a bunch of debug logging that was slowing down the LUA token.<a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Newline<\/a> <\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220120.120' name='120'>20220120.120<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#WEEKNUM'>WEEKNUM<\/a> token, along with DAYNUM, weeknum, and daynum.<\/p>\n                <p>Whack-a-mole with PayPal's random changes.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20211219.119' name='119'>20211219.119<\/a><\/td><td>\n<p>Warn when PayPal seems to have given a bogus code in the web-confirmation page.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20211031.118' name='118'>20211031.118<\/a><\/td><td>\n<p>Some error messages were presented incorrectly.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210721.117' name='117'>20210721.117<\/a><\/td><td>\n<p>Added {ExportedByteSize} and {ExportedFileSize} to the plugin-specific list of tokens.<\/p>\n\n                <p>Fixed that the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Province'>Province<\/a> template token did not respect the plugin-specific geo-privacy settings.<\/p>\n\n                <p>Fixed an issue with the {Newline} token, and added {Comma}, {Hyphen}, and {Space} for good measure.<\/p>\n\n                <p>Fixed a problem with filters on the {Keyword} token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210415.116' name='116'>20210415.116<\/a><\/td><td>\n<p>Reworked the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Keywords<\/a> token to better accept filters.<\/p>\n                <p>Added 'separated by' to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#token'>People<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20201207.114' name='114'>20201207.114<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#ImageViewDirection'>ImageViewDirection<\/a> and ImageViewBearing tokens.<\/p>\n                <p>Working around 'constant table overflow' error.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20201103.113' name='113'>20201103.113<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PF'>PF filter<\/a> to turn typographic fractions into plain-ASCII fractions.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20201017.112' name='112'>20201017.112<\/a><\/td><td>\n<p>Updates for Lr10<\/p>\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SpeedKnots'>SpeedKnots<\/a> token.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200810.111' name='111'>20200810.111<\/a><\/td><td>\n<p>Worked around an \"unknown key captureTime\" error.<\/p>\n                <p>Added the {PlusCode} and {GeoHash} <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template\">tokens<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200418.110' name='110'>20200418.110<\/a><\/td><td>\n<p>Added keyboard shortcut hooks for the Plugin Extras menu, on Windows.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200330.109' name='109'>20200330.109<\/a><\/td><td>\n<p>Work around a Windows bug related to canceling out of the registration dialog.<\/p>\n                <p>Some of the filename-related tokens could be incorrect in rare situations.<\/p>\n                <p>Added some extra debug logging to note whether the plugin is enabled.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20191104.108' name='108'>20191104.108<\/a><\/td><td>\n<p>Updates for Lr9 (Lightroom Classic CC Version 9).<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190903.107' name='107'>20190903.107<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#LensInfo'>LensInfo<\/a> template token.<\/p>\n\n                <p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Exposure'>Exposure<\/a> token to allow customization.<\/p>\n\n                <p>More <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>token<\/a> work: added {Urls}, and updated {ISO} and {Copyright} to allow customization.<\/p>\n\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#RelativeFolder'>{RelativeFolder}<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190810.106' name='106'>20190810.106<\/a><\/td><td>\n<p>Fixed the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SST1'>SST1<\/a> and SST2 tokens.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190731.105' name='105'>20190731.105<\/a><\/td><td>\n<p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PublishCollectionName'>PublishCollectionName<\/a> token (and <tt>CollectionNames<\/tt> and <tt>CollectionFullNames<\/tt>) to remove the MIRROR: prefix from the name that mirrored collections within <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher'>my Collection Publisher plugin<\/a> automatically get.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190708.104' name='104'>20190708.104<\/a><\/td><td>\n<p>Fixed a problem related to template tokens and photos without capture times.<\/p>\n\n                <p>Added functions <tt>uc()<\/tt>, <tt>ucFirst()<\/tt>, <tt>lc()<\/tt>, and <tt>lcFirst()<\/tt> to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'>LUA<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190324.103' name='103'>20190324.103<\/a><\/td><td>\n<p>Added the <tt>PEOPLE<\/tt> variable to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'><tt>LUA<\/tt> token<\/a>.<\/p>\n\n                <p>Fixed a problem with the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SpeedKPH'>SpeedKPH<\/a> token.<\/p>\n\n                <p>Added <b>TempC<\/b> and <b>TempF<\/b> to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> that my plugins understand.<\/p>\n\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#TempC'>TempC<\/a> and <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#TempF'>TempF<\/a> tokens.<\/p>\n\n                <p>Updated the keyword-related <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>tokens<\/a> to accept standard filters.<\/p>\n\n                <p>Work around a bug that sometimes causes plugins to be disabled when starting Lightroom via clicking on a catalog file.<\/p>\n\n                <p>Fix an \"Unknown key: captureTime\" crash.<\/p>\n\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#GPSCoords'>GPSCoords<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20181015.102' name='102'>20181015.102<\/a><\/td><td>\n<p>Updates for Lr8 (Lightroom Classic CC Version 8).<\/p>\n                <p>Added hierarchical options to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Keywords'>the <tt>Keywords<\/tt> token<\/a>.<\/p>\n                <p>Added <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PP'>the special <tt>PP()<\/tt> function<\/a> to the {LUA} token.<\/p>\n                <p>Try to work around a Lightroom bug related to photo timezones and how Lightroom handles accessing plugin data.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20181004.101' name='101'>20181004.101<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#nicknames'>'nicknames' modifier<\/a> to the {People} token.<\/p>\n \n                <p>Added the SST1, SST2, and SS3 tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>\n                that the plugin understands.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180907.100' name='100'>20180907.100<\/a><\/td><td>\n<p>Try to avoid having unexpectedly-long error messages create too-big a dialog.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180527.99' name='99'>20180527.99<\/a><\/td><td>\n<p>Allowed the custom commands (in File &gt; Plugin Extras) to be configured to be invoked on all selected photos\n               as a group, or individually one by one.<\/p>\n   \n               <p>Fixed a bug when 'Token Examples' invoked in certain situations.<\/p>\n\n               <p>Clicking on the version number in the Plugin Manager now copies version info to the clipboard<\/p>\n\n               <p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PublishCollectionName'>PublishCollectionName<\/a> token to allow numeric arguments along the lines of the CollectionName token.<\/p>\n\n               <p>Added the folowing <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>: <tt>{home}<\/tt>,  <tt>{desktop}<\/tt>, <tt>{temp}<\/tt>, <tt>{pictures}<\/tt>, <tt>{documents}<\/tt><\/p>, <tt>{IptcDateTaken}<\/tt>\n\n               <p>Added a bunch of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#filters'>token filters<\/a>: F2D F2S F2X B2D B2S B2X S2X A2D A2S A2X<\/p>\n\n               <p>Added the 'PCH' variable to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#LUA'>the {LUA} tag<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171229.98' name='98'>20171229.98<\/a><\/td><td>\n<p>Updates to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>the data templates<\/a> that my plugins understand:\n                updated the <b>Keywords<\/b> token, added <b>CollectionNames<\/b> and <b>CollectionFullNames<\/b> tokens, and\n                added a bunch of stuff (<b>KWf<\/b>, <b>CN<\/b>, <b>CFN<\/b>, <b>CNf<\/b>, <b>CFNf<\/b>) to the {LUA} token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171129.97' name='97'>20171129.97<\/a><\/td><td>\n<p>Fixed some stuff with the custom-command feature.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171019.96' name='96'>20171019.96<\/a><\/td><td>\n<p>Oops, more Lr7 stuff.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171019.95' name='95'>20171019.95<\/a><\/td><td>\n<p>Updates for Lightroom 7<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171005.94' name='94'>20171005.94<\/a><\/td><td>\n<p>Better handle some character-encoding issues related to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>.<\/p>\n\n               <p>Allow the \"If Exists\" feature of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>Templat Tokens<\/a> to work with the PluginProperty token.<\/p>\n\n               <p>Update registration support to handle a stupid bug at PayPal that PayPal refuses to fix )-:<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170901.93' name='93'>20170901.93<\/a><\/td><td>\n<p>Fixed broken error reporting with the upon-completion command preparation execution.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170826.92' name='92'>20170826.92<\/a><\/td><td>\n<p>Fixed a bug introduced in previous update.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170823.91' name='91'>20170823.91<\/a><\/td><td>\n<p>Added support for generic template tokens in the after-export command, with per-photo tokens referring to the first photo successfully exported.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170710.90' name='90'>20170710.90<\/a><\/td><td>\n<p>Fixed a bug introuded the other day in template tokens, related to Windows filenames.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170621.89' name='89'>20170621.89<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Newline<\/a> template token.<\/p>\n               <p>Enhanced the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#FolderName'>FolderName token<\/a><\/p>\n               <p>Added the <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template#optional\">\"only if it has a value\" feature<\/a> to template tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170425.88' name='88'>20170425.88<\/a><\/td><td>\n<p>An error message confusingly had the name of another plugin in it.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170309.87' name='87'>20170309.87<\/a><\/td><td>\n<p>Fixed a bug with the keyword tables in the <tt>LUA<\/tt> token.<\/p>\n\n               <p>Added Weekday, Wday, weekday, and wday to the list of <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template\">template tokens<\/a> that my plugins understand.<\/p>\n\n               <p>Switch the log-sending mechanism to https.<\/p>\n\n               <p>Added \"ISO8601Date\" to the <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template\"> template tokens<\/a> that my plugins understand.<\/p>\n\n               <p>Added the following tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens that my plugins understand<\/a>: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160718.86' name='86'>20160718.86<\/a><\/td><td>\nOops, new collection\/publish stuff added in previous update didn't respect the \"enabled\" checkbox.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160716.85' name='85'>20160716.85<\/a><\/td><td>\n<p>Added the ability to add processed photos to collections, and to publish a collection.<\/p>\n\n     \t       <p>Try to avoid yet another place where Lightroom gets hung because it can't handle certain kinds of\n               dialogs at the same time.<\/p>\n\n\t           <p>Added Russian-langauge support for the People-Support <code>{People}<\/code> tag.<\/p>\n\n\t           <p>Added the following tokens to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>the templates that my\n               plugins understand<\/a>: <tt>FileModYYYY<\/tt>, <tt>FileModYY<\/tt>, <tt>FileModMM<\/tt>, <tt>FileModDD<\/tt>,\n               <tt>FileModHH<\/tt>, <tt>FileModMIN<\/tt>, <tt>FileModSS<\/tt>, <tt>FileYYYY<\/tt>, <tt>FileYY<\/tt>, <tt>FileMM<\/tt>,\n               <tt>FileDD<\/tt>, <tt>FileHH<\/tt>, <tt>FileMIN<\/tt>, <tt>FileSS<\/tt>, <tt>{FilenameNumber}<\/tt>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20151215.84' name='84'>20151215.84<\/a><\/td><td>\n<p>Fixed how custom {People} formatting works with people keywords that have no birthday associated with them.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20151204.83' name='83'>20151204.83<\/a><\/td><td>\n<p>Added <b>ChildOf<\/b> and <b>DescendantOf<\/b> filters to the <b>{Keywords}<\/b> and <b>{KeywordsAll}<\/b>\n               <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> that my plugins understand.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20151019.82' name='82'>20151019.82<\/a><\/td><td>\n<p>Added {SpeedKPH} and {SpeedMPH} to the list of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template\n               tokens supported by my plugins<\/a>.<\/p>\n\n               <p>The <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#token'>{People} token<\/a> wasn't working\n               properly for some keywords without a registered birthday.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150517.81' name='81'>20150517.81<\/a><\/td><td>\n<p>Fixed the \"SpecPeople:259: attemt to index al nil value\" error.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150206.80' name='80'>20150206.80<\/a><\/td><td>\n<p>Command wasn't being applied to rendered video files.<\/p>\n               <p>On OSX, allow text in the error-report dialog to be selected and copied.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150206.79' name='79'>20150206.79<\/a><\/td><td>\n<p>In the POODLE-vunerability dialog, display a raw URL of a page on my site that discusses the issue,\n               so that folks can be independently sure that the dialog is indeed from me and not malware.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150131.78' name='78'>20150131.78<\/a><\/td><td>\n<p>Fix to the date_diff() function supported by the LUA <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template\n               token<\/a>.<\/p>\n\n               <p>Updated the camera-name code to try to guess the actual camera model of Hasselblad H5D files, since in their\n               infinite wisdom Hasselblad decided to encode three distinct models with the same internal code, making it impossible\n               to know for sure what camera produced a given image file.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20141219.77' name='77'>20141219.77<\/a><\/td><td>\nRegistration was broken on Lr2\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20141019.76' name='76'>20141019.76<\/a><\/td><td>\nWindows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140923.75' name='75'>20140923.75<\/a><\/td><td>\nAdded the <b>LrMD5<\/b>, <b>LrLocalization<\/b>, <b>LrSystemInfo<\/b>, and <b>LrMath<\/b> packages to the {LUA} <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template token<\/a>.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140921.74' name='74'>20140921.74<\/a><\/td><td>\nAdded the {MANIFEST} token\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140920.73' name='73'>20140920.73<\/a><\/td><td>\nAdded a rudimentary \"apply custom command to selected master image files\" functionality.\n               See the <b>File &gt; Plugin Extras &gt; jf Run Any Command<\/b> menu to configure and launch.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140902.72' name='72'>20140902.72<\/a><\/td><td>\nNew build system\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140802.71' name='71'>20140802.71<\/a><\/td><td>\n<p>Made the {GPSAltitude}, {Altitude}, and {GPSCoordinates} tokens subject to the geo-privacy settings like the other geo-related tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140731.70' name='70'>20140731.70<\/a><\/td><td>\nRegistration fix for Lr5.6\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140729.69' name='69'>20140729.69<\/a><\/td><td>\nPrevious updates broke support on Lightroom 2\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140720.68' name='68'>20140720.68<\/a><\/td><td>\nMore Creative-Cloud support.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140715.67' name='67'>20140715.67<\/a><\/td><td>\n<p>Fixed an issue with Creative-Cloud revalidation.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140712.66' name='66'>20140712.66<\/a><\/td><td>\n<p>Lr5.5 and later Creative-Cloud installs can now revalidate themselves if needed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140710.65' name='65'>20140710.65<\/a><\/td><td>\nSigh, had a bug in the Creative-Cloud support.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140708.64' name='64'>20140708.64<\/a><\/td><td>\n<p>Now supports Lr5.5+ Creative-Cloud Installs.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140704.63' name='63'>20140704.63<\/a><\/td><td>\nSigh, introduced an error for some folks with the rebuild the other day.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140630.62' name='62'>20140630.62<\/a><\/td><td>\nBuild-system update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140613.61' name='61'>20140613.61<\/a><\/td><td>\n<p>Added date_diff() and raw_time_diff() functions to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'>the special {LUA} token<\/a> understood by the plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140509.60' name='60'>20140509.60<\/a><\/td><td>\n<p>Added new tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template language<\/a> the plugin understands: LrVersion, LrVersionMajor, LrVersionMinor, LrVersionRevision, LrVersionBuild, Location, CatalogName, CatalogPath, OperatingSystem, OS<\/p>\n               <p>Added new token filters: NS and LO<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140423.59' name='59'>20140423.59<\/a><\/td><td>\nFix a location-related template-token bug introduced in a recent build.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140422.58' name='58'>20140422.58<\/a><\/td><td>\n<p>Fixed a bug in the \"smoother revalidation\" stuff recently added.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140417.57' name='57'>20140417.57<\/a><\/td><td>\n<p>The {Empty} template token wasn't working properly.<\/p>\n               <p>Make the revalidation process smoother, especially for folks using Lr5.4 and later.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130926.56' name='56'>20130926.56<\/a><\/td><td>\nOops, fix a bug introduced in the previous update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130925.55' name='55'>20130925.55<\/a><\/td><td>\n<p>Added a bunch of tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>preset templates<\/a> supported:\n               <tt>ExportFormat<\/tt>, <tt>ExportColorSpace<\/tt>, <tt>ExportBitDepth<\/tt>, <tt>ExportQuality<\/tt>, <tt>ExportSharpeningLevel<\/tt>,\n               <tt>ExportSharpeningMedia<\/tt>, <tt>IpernityUrl<\/tt>, <tt>GoogleDriveUrl<\/tt>, and <tt>TumblrUrl<\/tt>.<\/p>\n\n               <p>The token-examples dialog had been broken.\n               Also deprecated <tt>Folder<\/tt> and <tt>Path<\/tt> tokens in preference to <tt>FolderName<\/tt> and <tt>FolderPath<\/tt> tokens.<\/p>\n\n               <p>Fixed the KW\/KWE tables used by the <tt>LUA<\/tt> token; they had been broken when using <tt>load<\/tt> for the script.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130613.54' name='54'>20130613.54<\/a><\/td><td>\nBetter support for plugin revalidation.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130611.53' name='53'>20130611.53<\/a><\/td><td>\nYet another Lr5 update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130524.52' name='52'>20130524.52<\/a><\/td><td>\nApparently, a recent change broke things on Lr2, which some folks apparently still use.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130501.51' name='51'>20130501.51<\/a><\/td><td>\nUpdate for Lr5\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130412.50' name='50'>20130412.50<\/a><\/td><td>\nBuild system update.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130328.49' name='49'>20130328.49<\/a><\/td><td>\nFix for the registration system.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130220.48' name='48'>20130220.48<\/a><\/td><td>\n<p>Added support for some new <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>:\n               <b>FlagStatus<\/b> (requires Lr4.1 or later), and for Lr3 and later, a bunch of IPTC extended metadata:\n               <b>AdditionalModelInfo<\/b>,\n               <b>CodeOfOrgShown<\/b>,\n               <b>DigImageGUID<\/b>,\n               <b>Event<\/b>,\n               <b>ImageSupplierImageId<\/b>,\n               <b>MinorModelAge<\/b>,\n               <b>ModelAge<\/b>,\n               <b>ModelReleaseID<\/b>,\n               <b>ModelReleaseStatus<\/b>,\n               <b>NameOfOrgShown<\/b>,\n               <b>PersonShown<\/b>,\n               <b>PlusVersion<\/b>,\n               <b>PropertyReleaseID<\/b>,\n               <b>PropertyReleaseStatus<\/b>, and\n               <b>SourceType<\/b>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130209.47' name='47'>20130209.47<\/a><\/td><td>\nMore build-system maintenance\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130206.46' name='46'>20130206.46<\/a><\/td><td>\nTweak for my registration system\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121009.44' name='44'>20121009.44<\/a><\/td><td>\n<p>Enhance the <b>{EMPTY}<\/b> <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template token<\/a> so that it\n               interrupts the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#joining'>squelching of superfluous joining characters<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120821.43' name='43'>20120821.43<\/a><\/td><td>\n<p>Updates to the environment in the <tt>{LUA}<\/tt> token (in the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>\n                in my plugins) to include <b>photoTime()<\/b> and <b>currentTime()<\/b>, and other changes to match the updated docs at that link.<\/p>.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120608.42' name='42'>20120608.42<\/a><\/td><td>\nFix an \"attempt to perform arithmetic on field\" error.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120526.41' name='41'>20120526.41<\/a><\/td><td>\n<p>Update to handle the Mac App Store version of Lightroom.<\/p>\n\n               <p>Tweak for Lr4.1RC2.<\/p>\n\n               <p>Added to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> supported by the plugin:\n                 <b>{FullMasterFolder}<\/b>,\n                 <b>{FullExportedFile}<\/b>, and\n                 <b>{FullExportedFolder}<\/b>, and to match, renamed the recently-added <b>{FullMasterPath}<\/b> to <b>{FullMasterFile}<\/b>.\n                 <\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120411.40' name='40'>20120411.40<\/a><\/td><td>\n<p>Enhanced the send-log dialog to hopefully make reports more meaningful to me, yielding, I hope, the ability to respond\n               more sensibly to more reports.<\/p>\n\n               <p>Added <b>{FullMasterPath}<\/b> to the list of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>\n               supported by the plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120330.39' name='39'>20120330.39<\/a><\/td><td>\nUpdate to handle 4.1RC.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120309.38' name='38'>20120309.38<\/a><\/td><td>\nHad broken registrations in Lr2;  Update to the debug logging to better track down timing issues that might arise.\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120304.37' name='37'>20120304.37<\/a><\/td><td>\n<p>More on the march toward Lr4, including upheaval in the code to handle  Lightroom APIs being discontinued in Lr4.<\/p>\n\n               <p>Added the <b>{AspectRatio}<\/b> token to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>token templates<\/a> understood\n               by the plugin, and added the <b>Length=<i>num<\/i><\/b> filter.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120114.36' name='36'>20120114.36<\/a><\/td><td>\nMore tweaks for Lr4b\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120112.35' name='35'>20120112.35<\/a><\/td><td>\n<p>Update for Lr4 beta: explain in the plugin manager that the plugin can't be registered in the beta.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20111210.34' name='34'>20111210.34<\/a><\/td><td>\n<p>Had issues with the registration button sometimes not showing.<\/p>\n\n               <p>When doing a plugin upgrade, offer the ability to flush all the old copies of the plugin.<\/p>\n\n\t           <p>Added a system-clock check and reports to the user if the system clock is more than a minute out of\n\t           date. An incorrect system clock can cause problems with various kinds of communication and authentication\n\t           with some of my plugins, so I've just gone ahead and added this to every plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20111011.33' name='33'>20111011.33<\/a><\/td><td>\nThe <tt>{Path}<\/tt> token wasn't working properly.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20110608.32' name='32'>20110608.32<\/a><\/td><td>\nIn some cases where the command could not be run, the plugin crashed instead of reporting the error.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20110113.31' name='31'>20110113.31<\/a><\/td><td>\nAdded {CroppedWidth} and {CroppedHeight} to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> used by my plugins.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100829.30' name='30'>20100829.30<\/a><\/td><td>\nMade the revalidation process much simpler, doing away with the silly need for a revalidation file.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100820.29' name='29'>20100820.29<\/a><\/td><td>\nDiscovered a bug in my plugin build system that caused horribly difficult-to-track-down errors in one plugin,\n               so am pushing out rebuilt versions of all plugins just in case.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100817.28' name='28'>20100817.28<\/a><\/td><td>\n<p>Added code to allow plugin revalidation after having been locked due to a bad Lightroom serial number.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100723.27' name='27'>20100723.27<\/a><\/td><td>\nFigured out how to add the ability to run a command after all files have exported.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100625.26' name='26'>20100625.26<\/a><\/td><td>\nYikes, shaking out some more build issues.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100624.25' name='25'>20100624.25<\/a><\/td><td>\nDiscovered a nasty build bug; pushing a new version in case it affects this plugin.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100609.24' name='24'>20100609.24<\/a><\/td><td>\n<p>This version can be <a href='https:\/\/regex.info\/blog\/2010-06-08\/1539'>registered in\n               Lightroom 3<\/a>. It can run in Lightroom 2 or Lightroom 3; it does not work in the Lr3 betas.<\/p>\n\n               <p>It uses my new registration system when run on Lightroom 3,\n               which avoids some of the silly issues of the old one. Please take care to note\n               the details on <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/register'>the registration\n               page<\/a>: use of this version (or later) of the plugin in Lightroom 3 requires a new\n               registration code, even if you had registered some older version of the plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100516.23' name='23'>20100516.23<\/a><\/td><td>\nUpdate for the Lr3 beta.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100327.22' name='22'>20100327.22<\/a><\/td><td>\n<p>Added new tokens to the templates that my plugins use, <b>CameraName<\/b>, <b>IfGeoencoded<\/b>,\n               <b>Keywords<\/b>, <b>IfKeyword<\/b>, <b>IfExportedKeyword<\/b>, and <b>LUA<\/b>. See the <a\n               href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>templates page<\/a> for details.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100312.20' name='20'>20100312.20<\/a><\/td><td>\n<p>Fixed up some issues with the help dialog, and added a warning referring to it if the user command\n               doesn't seem to refer to the exported image.<\/p>\n\n               <p>Changed the semantics of the <tt>Places<\/tt> filter (in the tokens understood by the\n               <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>preset templates<\/a> of my plugins) in two\n               ways: if applied to a string value rather than a number, it works on the first number found in the\n               string. Another is that you can now use something like <tt>Places=-1<\/tt> to round to the 10s,\n               <tt>Places=-2<\/tt> to round to the 100s, etc.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100205.19' name='19'>20100205.19<\/a><\/td><td>\n<p>Fixed the {GPSAltitude} template token so that it should now actually work.<\/p>\n\n               <p>Completely changed how the one-click upgrade applies the newly-downloaded zip file, in the hopes that\n               it'll work for more people. Rather than unzipping over the old copy, it now unzips to a temporary\n               folder, then moves the old folder out of the way and the new folder into place. Prior versions' folders\n               are now maintained (with the version number in the folder) in case you want to revert a version; you\n               may want to clear them out from time to time. Of course, it won't take affect until you try to upgrade\n               <i>after<\/i> having upgraded to or beyond this version.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20100118.18' name='18'>20100118.18<\/a><\/td><td>\nAdded two new <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>,\n               <b>{<a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#DaysSince'>DaysSince<\/a>}<\/b>\n               and\n               <b>{<a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PhotoDaysSince'>PhotoDaysSince<\/a>}<\/b>.\n               They're a bit tricky, but could be useful.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20091214.17' name='17'>20091214.17<\/a><\/td><td>\nAdded the ability to save command presets.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20091205.16' name='16'>20091205.16<\/a><\/td><td>\nMinor internal debugging tweaks.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20091118.15' name='15'>20091118.15<\/a><\/td><td>\nAdded an <tt>{Altitude}<\/tt> item to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>templates<\/a> understood\n               by the plugin. It's the numeric altitude in meters, as opposed to the <tt>{GPSAltitude}<\/tt> item which is\n               a description of the altitude along the lines of <span class='nobr'>&#8220;<b>32.7 m<\/b>&#8221;<\/span>.\n               Also updated the <tt>Places<\/tt> filter so that it can be used on fields that merely begin with a number.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20091022.14' name='14'>20091022.14<\/a><\/td><td>\nAdded a <b>first draft<\/b> of some rudimentary support for <i>Lightroom 3 Beta<\/i>.\n               See <a href='https:\/\/regex.info\/blog\/2009-10-22\/1339' class='quiet'>this important note about\n               plugin support in <i>Lightroom 3 Beta<\/i> and <i>Lightroom 3<\/i><\/a>, including future plans for\n               features and my registration system.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090714.13' name='13'>20090714.13<\/a><\/td><td>\n<p>Enhanced the one-click upgrade stuff quite a bit, now\n               detecting ahead of time when it will fail because the plugin is installed where Lightroom\n               can't write (if Lightroom can't write to it, it can't update itself). I\n               also added a progress bar, and now download in smaller chunks to avoid 'out\n               of memory' errors on the larger plugins. Do remember that this new functionality becomes\n               available <i>after<\/i> you upgrade to or past this version, when you then upgrade <i>with<\/i> it.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090629.12' name='12'>20090629.12<\/a><\/td><td>\nFixed a boo-boo in the help dialog, and added a note that command-line quotes should\n               be ASCII, never \"smart quotes\".\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090521.11' name='11'>20090521.11<\/a><\/td><td>\nFixed a \"loadstring\" error some users got.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090510.10' name='10'>20090510.10<\/a><\/td><td>\nAdded a link in the Plugin Manager to the plugin's update-log RSS feed.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090425.9' name='9'>20090425.9<\/a><\/td><td>\nTweaked how the plugin tries to update itself during the one-click upgrade process, to\n              hopefully get things working for those few Windows users that have never had it work. Crossing\n              fingers. We'll see.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090313.8' name='8'>20090313.8<\/a><\/td><td>\nIt seems that PayPal doesn't give everyone a \"Unique\n              Transaction ID\" in the registration confirmation mail; some people get a\n              \"Receipt Number\". So, the registration dialog now accepts that as well.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090228.7' name='7'>20090228.7<\/a><\/td><td>\nFixed a bug that caused a plugin crash if my server couldn't be reached during registration.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090223.6' name='6'>20090223.6<\/a><\/td><td>\n<p><b>NOTE: you may need to restart Lightroom after installing to this (or\n              a later) version from the previous (or an earlier) version. Please try a\n              restart if you get an error the first time you try to use the\n              plugin.<\/b><\/p>\n\n              <p>As per the ongoing discussion on my blog, with this version this plugin moves over to\n              a \"donationware\" model, in which the plugin remains free, but registration eventually becomes\n              required (and an eventual donation hoped for \ud83d\ude42 ).<\/p>\n\n              <p>For details, see <a class='quiet'\n              href='https:\/\/regex.info\/blog\/2009-02-15\/1148'><i>Lightroom Plugin\n              Development: Now With Added Encouragement<\/i><\/a>. (For info about what\n              drove this decision, see <a class='quiet'\n              href='https:\/\/regex.info\/blog\/2009-02-03\/1134'><i>What To Do When a Hobby\n              Becomes Work?<\/i><\/a>)<\/p>\n              \n              <p>The plugin no longer expires, and correspondingly, I will not pay much attention to reports\n              of bugs that have already been fixed, so please check your version and\n              the version history before submitting bugs or feature requests.<\/p>\n\n              <p>There was a lot of internal upheaval in the code, so I expect that some boo-boos my\n              surface. If something breaks for you with this version, please let me know, but\n              until I fix it, feel free to revert to <a\n              href='http:\/\/regex.info\/LightroomPlugins2\/releases\/run-any-command-20090205.5.zip'>the\n              previous version<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090205.5' name='5'>20090205.5<\/a><\/td><td>\nBumping expiration into the future.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090130.4' name='4'>20090130.4<\/a><\/td><td>\nOops, forgot to include the unzipper in the plugin, so the automatic upgrade\n              won't work on Windows until after you manually upgrade to this version.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090129.3' name='3'>20090129.3<\/a><\/td><td>\nAdded an option to ignore errors generated by the command.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090129.2' name='2'>20090129.2<\/a><\/td><td>\nSmall housekeeping update for the new locales supported by Lightroom 2.3.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20090127.1' name='1'>20090127.1<\/a><\/td><td>\nInitial public release\n\n\n<\/td><\/tr><\/table>\n\n\n","protected":false},"excerpt":{"rendered":"<p>This plugin for Adobe Lightroom Classic provides four separate (but sort of related) functions:<\/p> <p><b>1)<\/b> It provides an \"export filter\" that allows you to run a command of your choosing with each exported image copy, as part of the export while its going on.<\/p> <p><b>2)<\/b> In the export filter, you can also apply a command to all exported image copies as a group, after the last one has been rendered.<\/p> <p><b>3)<\/b> In the export filter, you can also have processed photos added to a normal collection and\/or a publish collection, and can optionally invoke a Publish operation on a publish [...]","protected":false},"author":1,"featured_media":0,"parent":864,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/1124"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=1124"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/1124\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/864"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=1124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}