Free Trial

ディスカッション - 日本語

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

重複しているファイルを削除したのち、ファイルを別のフォルダに移動したい。

donnaanna
アトム
 

unnamed.jpg

ユニークツールのD出力から出てくるファイルをフォルダから削除したいです。

フィールド:FileNameにフルパスを持っているので、これを利用してrun commandツールを使えばよいと思うのですが、

使い方がわからず難儀しています。

 

また、その後フォルダに残っているファイルを処理済みのものとして別のフォルダに移動させたいです。

よろしくお願いいたします

5件の返信5
gawa
ボリード

 

仰る通りCommanfツールを使えばファイル操作は可能です。ワークフロー実行完了時に自動で.batを実行する機能もありますが、今回の要望は動的に消す/移動するファイルを決めたいものだと思い、以下のやり方がベストかなと思います。他にもっと良い方法や、私の説明がおかしい・補足などあればご指摘いただけると嬉しいです!

================================================================

ユニークツールのDアンカーから不要ファイルのフルパスが出てくるとのことなので、deleteコマンドを使います。まずは

del(半角スペース)消したいファイル名

という文字列データをフォーミュラで作ります。これが.bat実行時にファイルを消すコマンドになります。

gawa_0-1632493436677.png

Dアンカーからの入力にはフィールド数が複数あると思うので、👆のdelをつけたデータフィールド以外はセレクトで除外してください。

その下流にコマンドツールをつなげて以下のように設定していただき実行すれば、ファイルが削除されます。コマンドツールで上流からきたデータをそのまま.batに書き込み、その.batを実行、という処理をしています。

gawa_1-1632493612470.png

gawa_2-1632493834656.png

ファイル移動については、

move(半角スペース)移動させたいファイル名(半角スペース)移動先フォルダ名

というコマンドを実行します。やり方は👆のdeleteと同じなので詳細省略します。もしdeleteの時と別のコマンドツールを使うのであれば、こちらの.batファイル名の設定は、deleteのコマンドツールで設定したものと変えておいた方が良いかと思います。

 

ファイル消す操作は場合によっては業務で必要なデータを失う致命的な結果になる可能性もありますので、テストデータなどで動作確認されてから運用されることを推奨します。

 

以上、何か参考になればうれしいです。

AkimasaKajitani
オーロラ

@gawa さん @donnaanna さん

 

補足です。

 

以下推奨したいと思います。

 

・先頭行にフィールド名を含めるオプション : オフ

・出力フィールドを引用 : 常に非表示

 

AkimasaKajitani_1-1632533753726.png

 

ファイルパスに空白が含まれる場合、うまくファイル削除ができないと思いますので、二重引用符(ダブルクオーテーション)で囲む必要があります。この際、「出力フィールドを引用」を「自動」や「常時」にしておくとおかしなことになるので、「常に非表示」にすることで回避できます。

gawa
ボリード

@AkimasaKajitani 補足いただきありがとうございます。サンプルのツール設定そのまま使ってました^^;

いつも勉強になります!

donnaanna
アトム

@gawa さん@AkimasaKajitaniさん。ありがとうございます!

恥ずかしながらコマンドツールの設定の出力の意味が分かっていませんでした。フォーミュラでつくったものをいったんバッチファイルとして出力し、それを実行するということなんですね。


また、ファイルパスに空白が含まれる場合、など自分では思いつかないケースでした。ご指摘ありがとうございます!

AkimasaKajitani
オーロラ

@donnaanna さん

 

ちなみに、もともとあるバッチファイルを叩いたりも可能です。

ただ、ファイル名可変するような場合はWF内でバッチファイルを作った方が良いかと思います。