【困ってます】powershellを使ったフォルダ移動について

フォルダを移動するアクティビティがないため、powershellを呼び出しで下記のように作成しております。

コマンドテキスト Move-Item
パラメーター Path 移動元のフォルダパス
Destnation 移動先のフォルダパス
現在はこれでフォルダの移動ができてかつ上書き保存されていますが、別のPCでロボットを実行したところ「すでにフォルダが存在しています」と上書き保存できずにエラーが出ました。
フォルダを消せばいいだけの話ですが、いつでも上書き保存したい場合、
powershellを呼び出し上ではどのように記入すればいいでしょうか?

1 Like

こんにちは。

パラメーターに「Force」を設定してやればよさそうです、が、
名前はそれでいいとして値をどう設定すべきか自分も良く分からないですね・・
(型はSystem.Management.Automation.SwitchParameterっぽい?)

ずばりな回答は識者の方におまかせしつつ、とりあえずの代案になってしまいますが、
InvokeMethodでのフォルダ移動を最近やり取りしていたのでご参考になれば。

このメソッドに第3入力パラメータをTrueで設定してやると上書きオンになるはずです。

回答ありがとうございます

お手数ですが、上記メソッドをつかったメソッドを呼び出しの使い方、作成例を教えていただけませんか?

今やってみようと思ったのですが、いかんせん作り方がわからず…

こんな感じです。
フォルダ移動

ちなみに教えていただいた内容で、コード呼び出しにメソッドを書いてみたのですが、例外発生しました…

ありがとうございます!
一旦エラーは出ずにできました!
ちょっと動きが怪しいところがあったので、もう少し検証してみます
また何かありましたらこちらでリプライいたします

早速で申し訳ない…
移動元のフォルダにaというファイルを設定して、移動先フォルダ内に移動元フォルダを設定したところ、仲間のaファイルだけ出力されました…

ええと、仲間というのがよくわかっていませんが

■実行前
D:\hogehoge
└from
. └a.txt

D:\fugafuga

■実行後
D:\hogehoge

D:\fugafuga
└from
. └a.txt

こんな感じにしたいということでしょうか?
その場合は
第1引数:D:\hogehoge\from
第2引数:D:\fugafuga\from
と指定してやればfugafugaフォルダ配下にfromフォルダを作りつつhogehoge\fromフォルダの中身を移動してくれると思います。

何か焦点がずれていたら突っ込みお願いいたします。

なるほど、あらかじめフォルダを作成しつつ移動しないといけないんですね・・・
てっきり第一引数のフォルダを、第二引数のフォルダに重ねて移動することができるものだと思ってました

たとえば
フォルダaをフォルダb内のフォルダaに上書きで移動する場合になぜかフォルダaの中身のファイルが外に出た状態になります
これを防ぐ手段としては、移動先のフォルダを指定する際に、フォルダb¥フォルダaとしないといけない、という解釈でよろしいですか?

土日だったので返信遅れました、すみません。

そうですね、観念的には「フォルダをリネームしつつ移動」という処理になっている(と思います)ので、
フォルダb\フォルダaといった具合に、移動先における移動元フォルダの名前まで指定してやる必要がある、というイメージです。

ちょっと今は手が空いていないので試せなくてすみませんが、
移動元におけるフォルダ名についてはPath.GetFileName(移動元フォルダのフルパス)だったか
Path.GetFileName(移動元フォルダのフルパス)だったかでとれたんじゃないかなと思います。