Replace:正規表現後のファイルの変換処理

replaceで正規表現を利用してファイルを加工しました。
フォルダーのファイルデータを確認して条件に合致すればファイルをrenameするものです。(複数あります)

_1. から _9.であれば ファイル名の部分置換で_01. から _09.と0を追加するものです。

replaceでは
input: for each 読み込んだ配列 item.tostring
pattern: “(_)([1-9])(.pdf)”
regexoption : ignorecore,compiled
replacement : “_0$2.pdf”
misic
private: なし
resurt : result

write lineで確認するとファイル名が変換されていました。

後、実変換にinvoke codeを用いて
My.Computer.FileSystem.RenameFile( item.tostring,result)

としましたがエラーとなります。
ファイル名のrenameに関して教えてください。

正規表現というより、Invoke Codeの使い方の問題に見えます。
Invoke Codeの内側ではWorkflow内の変数を参照できないので、必要な値は引数に設定して渡してください。
(Invoke Workflowと同じような考え方です。Invoke Workflowで呼び出したWorkflowの内側では、呼び出し元で設定された変数は(引数にしない限り)触れません)

1 Like

申し訳ございません。

invoke codeの部分説明不十分でした。

edit arguments で

oldfile in string item.tostring
newfile out string result

と定義してcode editorで下記のように記載しています。
My.Computer.FileSystem.RenameFile(oldfile,newfile)

結果が下記エラーとなります。
Invoke code : Exception has been thrown by the target of an invocation.

code editorでは,文法エラーもないですし、item.tostring、resultとも絶対パスでの記載です。

oldfile in string item.tostring
newfile out string result

newfileもこの場合、inにしないといけないと思います。(Code側に渡される値で、Code側の戻り値ではないので)

1 Like

ありがとうございます。
Invoke Workflowの使い方と同様にしていました。
invoke codeの場合、
dimの定義をedit argumentsですること忘れていました。

My.Computer.FileSystem.RenameFile から
FileSystem.Rename にメソッドを変更したところrenameできました。

FileSystem.Rename (oldfile,newfile)

また、FileSystem.RenameFile (oldfile,newfile) で実行してみましたがNGでした。

2つのメソッドを「https://msdn.microsoft.com」で調べてみましたが同様の動きだと
いうことですが何故なのかと。

色々ありがとうございました。