需要复制源文件所在的目录,但希望目标文件位于单个目录中

需要复制源文件所在的目录,但希望目标文件位于单个目录中

有人问我是否可以从具有目录和子目录的源复制许多文件,并将目标设为单个目录。所有文件都复制到一个目录中。如果碰巧有重复的文件,它们只会以不同的文件名复制,例如...(1)。我尝试过 ROBOCOPY,但到目前为止还没有找到可以帮助我完成这项任务的开关。

谢谢你!

答案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。这样您就可以粘贴此脚本并更轻松地完成它。

相关内容