简体   繁体   中英

Dynamcially copy files from folders and subfolders to destination

I have a folder

D:\\Projects\\PowerShell\\Common

Inside Common folder, there got many sub folders and sub sub folders. What I want to achieve is to look for a csv files and copy to:

E:\\Projects\\PowerShell2\\Common

**D:\\Projects\\PowerShell\\Common and E:\\Projects\\PowerShell2\\Common has same directory structure.

Example

D:\\Projects\\PowerShell\\Common\\Geo\\ABC.csv

D:\\Projects\\PowerShell\\Common\\Geo\\MEA.csv

D:\\Projects\\PowerShell\\Common\\AREA\\ASA.csv

Copy to

E:\\Projects\\PowerShell2\\Common\\Geo\\ABC.csv

E:\\Projects\\PowerShell2\\Common\\Geo\\MEA.csv

E:\\Projects\\PowerShell2\\Common\\AREA\\ASA.csv

I can achieve this if I specify the location exactly like below, but I want the script able to handle it dynamically instead of hard-code. if the same files exist, just replace them.

$Src = 'D:\Projects\PowerShell\Common\Geo'
$Dst = 'E:\Projects\PowerShell2\Common\Geo'

$Extension = '*.csv'

Get-ChildItem -Path $Src -Filter $Extension -Recurse |
Where-Object {!$_.PsIsContainer} |
    # For each file
    ForEach-Object 
    {
        some code
    }

try this, copy and create dir in same time (if not exists)

$source='D:\Projects\PowerShell'
$destination='E:\Projects\PowerShell2'

gci $source -file -Filter "*.csv" -Recurse | 
%{$newfile=$_.Directory -replace [regex]::Escape($source), $destination; copy-item -Path $_.FullName -Destination (new-item -type directory -force $newfile)  -force -ea 0}

if you want log copied files

$source='D:\Projects\PowerShell'
$destination='E:\Projects\PowerShell2'
$logfile="c:\temp\mylog.log"

gci $source -file -Filter "*.csv" -Recurse | 
%{$newfile=$_.Directory -replace [regex]::Escape($source), $destination; copy-item -Path $_.FullName -Destination (new-item -type directory -force $newfile)  -force -ea 0 -PassThru | 
%{ $_.fullname | out-file $logfile -Append}}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM