2011-06-15 230 views
1

我得到了2個我想比較的文件夾。比較2個文件夾

兩個文件夾中有目錄的用數字 文件夾一個是像= 000123至000999 文件夾B猶如= 00TEXT至000999文本

現在我想匹配的文件夾名稱的數字時,數字匹配我想將folderb \ 000123文本的內容複製到foldera \ 000123。

我得到了下面的腳本,但這個心不是工作

$doel = "G:\Testkopiescript\" 
$regex = "^[0-9]*{6}" 

$bronfolder = Get-ChildItem "$p001" | ForEach-Object{$_.Name} | where {$_name -like   $regex} 
$checkfolder = Get-ChildItem "$doel*" | ForEach-Object{$_.Name} | where {$_name -like $regex} 

foreach ($folder in $bronfolder){ 
$result = test-path -path $doel\$folder -Filter $regex 
Copy-Item $m001\$folder $doel\$folder\ where {$_directoryname -like $folder} 
} 

回答

3

我覺得這樣是你在找什麼:

$source = 'C:\Temp\a' 
$dest = 'C:\Temp\b' 
$regex = '^\d{6}' 

# Get all folders under folder 'a' whose name starts with 6 digits. 
$sourceDirs = @(Get-ChildItem -Path $source| 
     Where-Object{$_.PSIsContainer -and $_.name -match $regex}) 

foreach($dir in $sourceDirs) { 
    # Get destination folders that match the first 6 digits of the 
    # source folder. 
    $digits = $dir.Name.Substring(0,6) 
    $destFolders = $null 
    $destFolders = @(Get-ChildItem "$dest\$digits*"| %{$_.FullName}) 

    # Copy if the destination path exists. 
    foreach($d in $destFolders) { 
     Get-ChildItem -Path $dir.FullName| 
      %{Copy-Item -Path $_.FullName -Destination $d -Recurse} 
    } 
} 
+0

沒有文件被複制,我也沒有得到任何錯誤。文件夾b中的文件夾名稱是6位數字,然後是文本。例如:00x8719手冊。 000123與文件夾a中具有相同編號000123的目錄相匹配。 – Diondk 2011-06-15 13:32:37

+0

「b」中的文件夾與「a」中的文件夾名稱相同嗎?還是隻匹配了6位數字? – Rynant 2011-06-15 13:43:07

+0

6位數字是唯一匹配 – Diondk 2011-06-15 13:44:57

2

另一種選擇:

Get-ChildItem .\b | Where-Object {$_.PSIsContainer -and $_.Name -match '^\d{6}' -and (Test-Path ".a\$($_.name.substring(0,6))" -PathType Container) } | Foreach-Object{ 
    Copy-Item -Recurse -Force -Path $_.FullName -Destination ".\a\$($_.name.substring(0,6))" 
}