フォルダーc:\graphics
(ルート) と、サブフォルダーを作成するプログラムがあります (例: 、、、) (aa
多くのサブフォルダーがあり、長さは可変です) 。bm
czx
mjpq
zz
各サブフォルダーには、26 個のファイルと 1 つのフォルダーがあります。たとえば、aa
フォルダには次のものが含まれます: aa_000.jpg
, aa_001.jpg
, ..., aa_023.jpg
; 他の 2 つのファイルaa_360.jpg
、aa.html
およびフォルダー。完全なパスはC:\graphics\aa\aa_360
.
サブフォルダー内の24 個のファイル ( aa_000.jpg
、aa_001.jpg
、...、aa_023.jpg
)を移動する必要がありc:\graphics\aa\aa_360
、各サブフォルダーにも相当します。
もう 1 つの例は、 、 、 ...、c:\graphics\mjpq\mjpq_360
を持っている必要があります。mjpq_000.jpg
mjpq_023.jpg
.jpg
サブフォルダー内のすべて (25 個のファイル) を移動することを考えてスクリプトを開始しました(後で、を抽出するように考える必要がありましたxxx_360.jpg
) が、機能しません:
Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg"} | ForEach-object {$newPath =(Get-Location).toString()+(Get-Location).ToString().SubString(10)+"_360"); Move-Item $_.FullName $newPath}
しかしGet-Location
、ファイルパスが見つかりません。
注:機能しているソリューションを見つけましたが、コンソールにいくつかのエラーがスローされます:
Get-ChildItem c:\graphics -rec | where-object {$_.extension -match "jpg" -and (!($_.name -like "*360*"))} | ForEach-Object {$newPath =($_.DirectoryName).toString()+($_.DirectoryName).ToString().SubString(10)+"_360"; Move-Item $_.FullName $newPath}