Необходимо скопировать файлы, где исходные файлы находятся в каталогах, но чтобы целевые файлы располагались в одном каталоге

Меня попросили посмотреть, могу ли я скопировать много файлов из источника, у которого есть каталоги и подкаталоги, и чтобы taget был одним каталогом. Все файлы в один каталог. Если будет дублированный файл, они просто скопируют его с другим именем, например ... (1). Я попытался выполнить ROBOCOPY, но пока не нашел переключателя, который помог бы мне с этой задачей.

Спасибо!

1
задан 5 May 2017 в 23:10
1 ответ

Это легко сделать с помощью powershell.

# Set the source and destination paths (No trailing slash)
$source = "C:\subtree"
$dest = "C:\consolidated"

# Get a list of all files recursively
$files = Get-ChildItem -Path $source -Recurse

# Process each file
$files | ForEach-Object {
    # Basename is filename w/o ext
    $baseName = $_.BaseName
    $ext = $_.Extension
    # Build initial new file path
    $newName = "$dest\$($_.Name)"

    # Check for duplicate file
    If (Test-Path $newName) {
        $i = 0
        # While the file exists, increment the number that will be appended
        While (Test-Path $newName) {
            $i++
            $newName = "$dest\$baseName($i)$ext"
        }
    } 
    # If the file is not a duplicate, write the (placeholder) file.
    Else {
        New-Item -ItemType File -Path $newName -Force
    }

    # Copy the file contents to the destination
    Copy-Item $_.FullName -Destination $newName -Force
}

Поскольку вы новичок в PowerShell, я предлагаю использовать Powershell ISE входит в комплект. Это позволит вам вставить этот сценарий и легче работать с ним.

2
ответ дан 3 December 2019 в 20:24

Теги

Похожие вопросы