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に関して教えてください。
Honoka
(Honoka Hayasaka)
2
正規表現というより、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とも絶対パスでの記載です。
Honoka
(Honoka Hayasaka)
4
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」で調べてみましたが同様の動きだと
いうことですが何故なのかと。
色々ありがとうございました。