ファイル名のリネームについて

はじめまして。
ご教示ください。

特定のフォルダにあるフォルダを全て以下のようにリネームしたいと思っております。
%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20(5)

色々調べて挑戦したのですが、うまくいかず…
もし、やり方があればご教示頂きたく存じます。

よろしくお願いします。

こちらをご参考にどうぞ!

と思ったら、フォルダ名のリネームなんですね?

1 Like

ご回答ありがとうございます。
フォルダのリネームになります。

1 Like

「ディレクトリを作成」アクティビティで、新ファイル名列のフォルダを作成します。
既に存在していたら、エラーとなるので、同アクティビティの「エラー発生時に実行を継続をTRUEにします。

フォルダ元にあるファイルをフォルダ先にコピーして(処理略)から、
「削除」アクティビティでフォルダ元を削除する。

該当フォルダにファイルがない状態で試験して動きました。

※ファイルが複数ある、サブフォルダがある場合は、もうちょっと複雑になるかもしれませんね。

1 Like

既に調べられていたらすみませんが、
Invoke methodを使用したやり方があります!

1 Like

こんにちは

Microsoft.VisualBasic.FileIO.FileSystemに RenameDirectory というフォルダの名前変更専用のスタティックメソッドがあるので、こちらを使う手もあります。
#Moveに比べると、もともと移動ができないので、第二引数に(フルパスではなく)新しい名前だけを指定すればよい分簡便かもしれません。

なお呼び出しはInvoke Methodアクティビティからになります。

2 Likes

ありがとうございます。ちなみにこれは、上記でご教示頂いたパッケージを使用しなくてもできるのでしょうか?

御返事ありがとうございます。
引数についてですが、
エクセルで作成したデータをそのまま参照させることはできますか?

Yoichi さんの方法が確実ですね。

method invokeアクティビティ配置して、その右の「コレクション」に引数を設定します。その際、固定値ではなく、変数が設定出来ます。

まずは固定値での動作検証を!!

1 Like

お返事遅くなってしまい申し訳ございません。
ご回答ありがとうございます。

まだ、勉強したてであまりよくわかっていないのですが、
"Microsoft.VisualBasic.FileIO.FileSystem"はパッケージ管理から”Microsoft.VisualBasic.dll”インストールであっていますか?
(というのも、何度もダウンロードしようとしたのですが、エラーでインストールができないため。)

また、” RenameDirectory”というのはアクティビティの場所にあるものなのでしょうか?

早急なご対応ありがとうございます。
返答して頂き感謝します。

動作検証してみます。

こんにちは

追加のパッケージは基本的には不要です。

Invoke MethodでTargetType にMicrosoft.VisualBasic.FileIO.FileSystem
を選択
MethodNameにRenameDirectory
を入力

Parameterに2つ引数を渡すと使えます。

なおこのメソッドは第2引数は新しいファイル名だけでよいので、今回のケースのようにフルパスが元データの場合例えばSystem.IO.Path.GetFileNameメソッドでファイル名だけにしてあげる必要があります。
これが面倒なら System.IO.Directory.Moveを使うことも検討します。ただし逆にフルパスで記載しないとリネームではなく、相対パスによる移動になる場合があります

お世話になっております。
お返事遅くなってしまい申し訳ございません。

ご教示ありがとうございます。
早速、上記の方法で試し、固定値でやったらうまくいったのですが、
変動値にするとうまくいかず…
(新しいファイル名のパスは削除して対応しました。)

パラメーターの値をエクセルからデータテーブルで読み取ったものを
文字列化にして変数に持たせ、その後メゾット呼び出しでご教示頂いたものを参照に入れました。

色々お伺い立ててしまい申し訳ございません。
よろしくお願いします。

こんにちは

NewNameの方にファイル名として使えない改行が含まれているようです。こちらを修正する必要があるかと思います。

お世話になっております。
御返事ありがとうございます。

改行について確認したのですが、使えない改行をどう消したらいいかわからず、
置き換えアクティビティを使用してもうまくいきませんでした。

フォルダリネーム.xaml (11.4 KB)

何度もお伺い立ててしまい申し訳ございません。
恐れ入りますが、ご教示頂けますと幸いに存じます。
よろしくお願いします。

こんにちは

データテーブルを直接テキストに書き出すアプローチはあまりよくないように思えます。
新旧ファイル名を含むテーブル全体を読み込み、それを各行ごとに処理する方法が無難かと思います。以下ご確認いただければと思います。

Sample.xaml (5.4 KB)

1 Like

お世話になっております。

御返事ありがとうございます。

色々ご教示していただきました結果、やっとできました・・・
本当にうれしいです。勉強になりました。ありがとうございます。

2 Likes