user13435722
user13435722

Reputation:

PowerShell script does not copy subfolders and their content

It's my first time using a custom Powershell script and I think I might be missing something. Everything works, except it doesn't copy subfolders and their content.


$sourcePath = 'C:\Users\User\Desktop\test\test1'
$destinationPath = 'C:\Users\User\Desktop\test\test2'
$files = Get-ChildItem -Path $sourcePath -Recurse
$filecount = $files.count
$i=0
Foreach ($file in $files) {
    $i++
    Write-Progress -activity "Moving files..." -status "($i of $filecount) $file" -percentcomplete (($i/$filecount)*100)

    # Determine the absolute path of this object's parent container.  This is stored as a different attribute on file and folder objects so we use an if block to cater for both
    if ($file.psiscontainer) {$sourcefilecontainer = $file.parent} else {$sourcefilecontainer = $file.directory}

    # Calculate the path of the parent folder relative to the source folder
    $relativepath = $sourcefilecontainer.fullname.SubString($sourcepath.length)

    # Copy the object to the appropriate folder within the destination folder
    copy-Item $file.fullname ($destinationPath + $relativepath)
}

i'm sure it's something to do with Path instead of Root or the Recurse option that's not used corretly.

If someone could help me it would be really appreciated.

Thank you!

Upvotes: 0

Views: 175

Answers (1)

To copy recursively, use

Copy-Item -Path <src> -Destination <dest> -Recurse

See Official documentation.

This may very well work for you. As for walking through a previously built list of source files and copying one-by-one as you did, it should work. I did not check/debug the code you put together.

If you actually need this walk through, simply debug your code by printing $files and the source and target of your copy-Item, this will tell you the source of problems. Please post this output in the OP.

You may have to use the option -Directory for Get-ChildItem, or class [System.IO.Path].

Upvotes: 1

Related Questions