トップページ > プログラム > 2014年10月05日 > +/TDLXSL

書き込み順位&時間帯一覧

16 位/239 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000100200014



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【最強CUI】PowerShell -Part 1

書き込みレス一覧

【最強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


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。