1 votes

Besoin de copier des fichiers où les fichiers sources sont dans des répertoires mais où les fichiers cibles doivent se trouver dans un seul répertoire.

On m'a demandé de voir si je pouvais copier de nombreux fichiers à partir d'une source qui a des répertoires et des sous-répertoires et si le taget était un répertoire unique. Tous les fichiers dans un seul répertoire. S'il y a un fichier en double, il suffit de le copier avec un nom de fichier différent, par exemple ...(1). J'ai essayé de ROBOCOPY mais jusqu'à présent je n'ai pas trouvé de commutateur qui m'aide dans cette tâche.

Merci de votre attention !

2voto

Cory Knutson Points 1835

Cette opération peut être réalisée facilement à l'aide de 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
}

Puisque vous êtes novice en matière de Powershell, je vous suggère d'utiliser l'ISE Powershell qui est inclus. Il vous permettra de coller ce script et de le travailler plus facilement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X