UiPathでフォルダのサイズを取得する方法

By | 2018年11月14日

UiPathでフォルダのサイズを取得する方法

※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、
この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。

UiPathには様々なアクティビティがありますが、意外と存在しないものもあります。
代表的なものは年月日系の取得、ファイルの名前を取得するなどですが、
これらは.netの方法がそのまま使えますので大して難しくありません。
しかし、フォルダのサイズに関しては1発で取る方法が見つからないと思います。
ここではUiPathでどうやってフォルダサイズを取得すればよいかを解説していきます。

1.かんたん Basic アクティビティパックを使う

関数を覚えなくても使える「かんたんBasicアクティビティパック」がリリースされましたので、
その中にある「フォルダーのサイズを取得」アクティビティを使うのがおすすめです。

2.かんたん Basic アクティビティパックを使うと死んでしまう呪いをかけられている場合

はどうすればよいのでしょうか。答えは…

フォルダの中にあるファイルのサイズを一つずつ調べて、全部足す

です。嘘じゃないです。.netでは本当にこれしかないんです。
.netでファイルサイズを取得するにはnewだの何だのと、いったいそんなのどこから出てきたんですか、
という内容となり、ほぼほぼ.netの話になるのでここでは解説しません。
専門的なサイトのほうでしっかり解説されていますのでそちらをご覧ください。
.netなんて極力勉強したくない!じゃあ、どうすればいいか、

フォルダのプロパティを開いてそこからテキストを取得する

です。これならいくらサブフォルダがあろうが隠しファイルがあろうが関係ありません。
これぞUiPathならでは、プログラム解らない人でも安心といった取り方です。

やりかたはただテキストを取得(Get Text)アクティビティでプロパティから取ってくるだけです。

プロパティウィンドウなのでループしなくても勝手にWindowsが計算してくれます。
ただ、この方法の弱点は見ての通り余計な情報が多いことです。

xxx KB(xxxx,xxxxバイト)のような感じで、例えばほしいのが()の中のバイトサイズだったら、
数字だけ加工して取ってくるのが面倒です。サイズによって文字数も変わりますし、
こんなのループして条件分岐なんてしてたらnewしたほうがよっぽどマシです。

そんなときは下記のように置換(replace)アクティビティと正規表現を使います。

上で.netがどうこういいながら正規表現というのも大概ですが¨
言語に関係なく使えるので、いきなりnewよりはましでしょう。

まず1つ目の置換(replace)アクティビティのプロパティのパターンの部分に、
“.*\((.*) バイト\)”と入力し、置換の入力欄に”$1″と何も考えずに入れれば、括弧の中の数字だけ取得できます。

2つ目の置換で,(カンマ)を””に変換して、削除します。もしかしたら1回でもできるかもしれません。
なお、入力と結果には同じ変数を指定できます。
(※上記はWindows7や8の場合で確認しました)

正規表現を使うと死んでしまう人は、もっと別のやり方を考えましょう。
例えばコマンドプロンプトを立ち上げてCDコマンドを使って目的のフォルダまで移動し、
Dirコマンドを打ってもサイズは取得することができると思います。(もちろんテキスト成型は必要でしょうが¨)
ダイレクトにサイズ、というのは取れませんが、UiPathはなんにでもアクセスできることを考えてみれば、
実は取る方法がたくさんあります。