RPAツール「Automation Anywhere」では、String Operation
コマンドのReplace
では正規表現が使える。
このコマンドを使えば1行で色々な操作ができる。
Regular Expressionのチェックボックスをオンにして使おう。
ちなみに、BotStoreにこの手の機能を実装したMetaBotもあるかもしれない。
検証バージョン:
Automation Anywhere Community Edition 11.0.0.0.0
やってみたらできたという話で、ベンダーが正式にサポートしているかというとよく分からんので、そこは自己責任でお願いします。
ファイルパス関連
ファイルのフルパスからファイル名を抽出
例
1(ドライブ)
置換前:C:\AA Test\String Operation\test.txt
置換後:test.txt
2(ネットワークフォルダ)
置換前:\\10.1.11.111\share\My work\test.txt
置換後:test.txt
コマンド設定
Find: ^.*\\
Replace: (空文字)
ファイルのフルパスからフォルダのパスを抽出
例
置換前:C:\AA Test\String Operation\test.txt
置換後:C:\AA Test\String Operation
コマンド設定
Find: \\[^\\]+$
Replace: (空文字)
ファイルのパスまたはファイル名にタイムスタンプ等を追加
例
タイムスタンプとして"_20190101_123456"を追加する
置換前:C:\AA Test\String Operation\test.txt
置換後:C:\AA Test\String Operation\test_20190101_123456.txt
コマンド設定
Find: \.(?=[^\.]+$)
#後方からみて最初に出現する.
に一致
Replace: vTimeStamp.
#vTimeStamp
はタイムスタンプが格納された変数
ファイルまたはフォルダのパスから親フォルダ名を抽出
例
置換前:C:\AA Test\String Operation\test.txt
置換後:String Operation
置換前:C:\AA Test\String Operation
置換後:AA Test
コマンド設定
Find: .+\\(?=[^\\]+\\[^\\]+$)|\\[^\\]+$
Replace: (空文字)
ファイルのフルパスまたはファイル名から拡張子なしのファイル名を抽出
例
1(フルパスから抽出)
置換前:C:\AA Test\String Operation\test-1.01.txt
置換後:test-1.01
2(ファイル名から抽出)
置換前:test-1.01.txt
置換後:test-1.01
コマンド設定
Find: ^.*\\|\.[^\.]+$
Replace: (空文字)
フルパスまたはファイル名から拡張子のみを抽出
例
1(フルパスから抽出)
置換前:C:\AA Test\String Operation\test-1.01.txt
置換後:txt
2(ファイル名から抽出)
置換前:test-1.01.txt
置換後:txt
コマンド設定
Find: ^.*\.
Replace: (空文字)
日付・時刻関連
yyyy/mm/dd HH:mm:ss
をyyyymmdd_HHmmss
形式に変換
例
置換前:2020/01/31 12:34:56
置換後:20200131_123456
コマンド設定
Find: (\d{4})/(\d\d)/(\d\d) (\d\d):(\d\d):(\d\d)
Replace: $1$2$3_$4$5$6
yyyy_m_d形式をyyyymmddに変換
Automation Anywhereのシステム変数のmonth、dayは頭にゼロが付かない。if分岐などを使う方法もあるが、行数が長くなる。
例
置換前:2019_1_1
置換後:20190101
置換前:2019_12_31
置換後:20191231
コマンド設定
1つのコマンドで実現する方法は思いつかなかった。
2回Replace
が必要。
1つ目のReplace
Find: _(?!\d\d)
Replace: _0
2つ目のReplace
Find: _
(アンダースコア)
Replace: (空文字)