Powershell 2 copy-item which creates a folder if doesn't exist

前端 未结 9 2451
余生分开走
余生分开走 2020-12-05 12:55
$from = \"\\\\something\\1 XLS\\2010_04_22\\*\"
$to =  \"c:\\out\\1 XLS\\2010_04_22\\\"
copy-item $from $to -Recurse 

This works if c:\\out\\

9条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-05 13:23

    function Copy-File ([System.String] $sourceFile, [System.String] $destinationFile, [Switch] $overWrite) {
    
        if ($sourceFile -notlike "filesystem::*") {
            $sourceFile = "filesystem::$sourceFile" 
        }
    
        if ($destinationFile -notlike "filesystem::*") {
            $destinationFile = "filesystem::$destinationFile" 
        }
    
        $destinationFolder = $destinationFile.Replace($destinationFile.Split("\")[-1],"")
    
        if (!(Test-Path -path $destinationFolder)) {
            New-Item $destinationFolder -Type Directory
        }
    
        try {
            Copy-Item -Path $sourceFile -Destination $destinationFile -Recurse -Force
            Return $true 
        } catch [System.IO.IOException] {
            # If overwrite enabled, then delete the item from the destination, and try again:
            if ($overWrite) {
                try {
                    Remove-Item -Path $destinationFile -Recurse -Force        
                    Copy-Item -Path $sourceFile -Destination $destinationFile -Recurse -Force 
                    Return $true
                } catch {
                    Write-Error -Message "[Copy-File] Overwrite error occurred!`n$_" -ErrorAction SilentlyContinue
                    #$PSCmdlet.WriteError($Global:Error[0])
                    Return $false
                }
            } else {
                Write-Error -Message "[Copy-File] File already exists!" -ErrorAction SilentlyContinue
                #$PSCmdlet.WriteError($Global:Error[0])
                Return $false
            }
        } catch {
            Write-Error -Message "[Copy-File] File move failed!`n$_" -ErrorAction SilentlyContinue
            #$PSCmdlet.WriteError($Global:Error[0]) 
            Return $false
        } 
    }
    

提交回复
热议问题