- 【最強CUI】PowerShell -Part 1
262 :デフォルトの名無しさん[sage]:2014/10/05(日) 16:24:58.31 ID:+/TDLXSL - >>261
ありがとうございます。 いけました。
|
- 【最強CUI】PowerShell -Part 1
263 :デフォルトの名無しさん[sage]:2014/10/05(日) 19:01:10.47 ID:+/TDLXSL - もう一つ質問です。
あるディレクトリが存在していたらそれを削除して新たに生成するという処理を書いているのですが if ( Test-Path $new_dir ) { Remove-Item -path $new_dir -recurse -force } New-Item -name $new_dir -type directory と記述したところ、既存の$new_dirが存在していてかつ、中身が少数のファイル数だった場合は問題なく動作しました。 しかし、小さいサイズのファイルが大量にあり削除に時間がかかるような$new_dirの場合 New-Itemが実行される際にエラーになります。 New-Itemが実行される時点でまだ、$new_dirが残っているらしく、すでにディレクトリあるからエラー、といわれてしまいます。 実際にディレクトリをみにいくとすでに消えています。 動作としては、 Remove-Itemの実行完了を待たずにNew-Itemが実行されているような印象でした。 Remove-Itemのオプションで-waitとかもないですし、 これを解消にするにはどうしたら良いでしょうか?
|
- 【最強CUI】PowerShell -Part 1
265 :デフォルトの名無しさん[sage]:2014/10/05(日) 19:54:27.47 ID:+/TDLXSL - >>264
> それはPowerShell固有の問題ではなく.NETの問題ぽいんだよね うーん、いろいろ深刻なんですね。 割とよくある処理だとおもうのですがw > 昔これに遭遇したときどうしたかなと調べてみたらフォルダそのものは削除せずにその配下を削除するというコードでお茶を濁してあった とりあえず、URLを参考にお茶を濁してみます。 ありがとうございました。
|
- 【最強CUI】PowerShell -Part 1
267 :デフォルトの名無しさん[sage]:2014/10/05(日) 23:59:21.00 ID:+/TDLXSL - >>266
> 削除に先立ってそのフォルダをリネームしてしまうのはどうかね リネーム先の名前がかぶってるかとかチェックするのがだるそうなので 簡略化してかくと↓みたいにして対処しました。 とりあえずこれで問題なくいけてます。 こういうポーリング処理は見苦しくてあまりすきじゃないんですがしょーがないです。 同期オブジェクトでももらえるなら、もらって終わったら起こしてもらうほうが好きですね。 remove-item $path while ( test-path $path ) { start-sleep -m 500 } new-item $path
|