Сравните 2 папки - PullRequest
       3

Сравните 2 папки

1 голос
/ 15 июня 2011

У меня есть 2 папки, которые я хочу сравнить.

В обеих папках есть каталоги с номерами Папка "а" = 000123 до 000999 Папка b имеет вид = 000123 ТЕКСТ до 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}
}

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Я думаю, что это то, что вы ищете:

$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}
    }
}
2 голосов
/ 15 июня 2011

Другой вариант:

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))"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...