2016-10-26 29 views
-1

私は数千のファイルを持つディレクトリを持っています。ファイル名の一部に基づいて新しいディレクトリを作成し、部分一致するファイルをそれらのディレクトリに並べ替えたいと思います。部分文字列一致とPowerShellを使用したフォルダの作成

ファイルはすべて同じ接頭辞「123-」で始まり、長さがランダムで長さが数えますが、数字の後には何も付いていません。私は正規表現を試しましたが、 "123-"の後ろにあるさまざまな数字の長さを一致させ、中間の数字の後のすべてをスキップすることに問題があります。

Example files: 
directory\123-4441Zebra.pdf 
directory\123-4441Tango.pdf 
directory\123-768987Beta.pdf 
directory\123-768987Tango.pdf 
directory\123-34263XYP.pdf 

Example Result: 
directory\123-4441\123-4441Zebra.pdf 
directory\123-4441\123-4441Tango.pdf 
directory\123-768987\123-768987Beta.pdf 
directory\123-768987\123-768987Tango.pdf 
directory\123-34263\123-34263XYP.pdf 

答えて

0

はこれを試してみてください:

$yourdir="C:\temp\root" 
gci $yourdir -File -Filter 123-*.pdf | %{$newdir=$yourdir + "\" + ($_.Name -replace '(123-\d+).*', '$1'); New-Item -Path $newdir -Force -ItemType Directory; Move-Item -Path $_.FullName -Dest $newdir -Force } 
+0

はあなたにEsperento57をありがとう!よく働く! –

0
PS C:\> '123-4441Zebra.pdf' -replace '(123-\d+).*', '$1' 
123-4441 

例えば

gci "c:\place\" | mv -Dest { "c:\out\$($_.Name -replace '(123-\d+).*', '$1')\" } -Force -WhatIf 

私のコードブロック(使用可能な場合)から自動生成されたPSのヘルプリンク:

  • gciは(モジュールMicrosoft.PowerShell.Managementに)Get-ChildItemの別名です
  • mvが別名でありますMove-Item(モジュールMicrosoft.PowerShell.Management
関連する問題