Powershellを使用して、あるフォルダから別のフォルダにフォルダ(およびサブフォルダまたはさらに深いフォルダ)をスキャンして移動したいとします。Get-ChildItemの結果はPowershellの相対パスのように見えます
現在、私はこのコマンドのパイプを使用しています。得られた結果は.\sub\WORK
に対して相対的であるため、
Get-ChildItem -recurse -path sub\WORK -filter "* OK" | Where-Object { $_.PSIsContainer } | foreach { Move-Item -path $_ -destination sub\OK }
残念ながら、それは動作しません、彼らが移動し、アイテムを移動しようとするときは、フォルダをカレントフォルダにないと文句を言い:
Move-Item : Cannot find path 'C:\TMP\2011-12-12 test 2 OK' because it does not exist.
私は期待してその$ _には'C:\TMP\sub\WORK\2011-12-12 test 2 OK'
が含まれています。これはPowershellのオブジェクトであり、Linuxのような文字列ではないからです。
私にはバグのように見えましたが、私のパワーシェルの経験はあまりにも低すぎると言いました。私が '-include "* OK"'を 'Get-ChildItem'に追加すると、それも機能します。あなたの説明はとても役に立ちました。 –
あなたが持っているものでなければ、とにかくToString()に頼るべきではありません。 :) – JasonMArcher