当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用PowerShell复制文件?

作者:精品下载站 日期:2024-12-14 15:44:37 浏览:14 分类:玩电脑

如何使用PowerShell复制文件?


要求:在 PowerShell 中复制文件。

如何使用 PowerShell 复制文件?

PowerShell 是一种功能强大的脚本编写工具,使管理员能够轻松自动执行任务,包括复制文件。在本指南中,我们将介绍使用 PowerShell 复制文件的步骤,包括如何复制单个文件、如何将所有文件从一个文件夹复制到另一个文件夹、如何复制和重命名文件等。

在 PowerShell 中,您可以使用 Copy-Item cmdlet 将文件从一个位置复制到另一个位置。从本质上讲,Copy-Item cmdlet 旨在将文件从同一命名空间中的一个位置复制到另一个位置。它可以处理文件系统操作,例如复制文件和目录以及注册表项和条目。

PowerShell 复制项语法和示例

该 cmdlet 的基本语法如下:


Copy-Item -Path <string[]> -Destination <string[]> [-Container] [-Credential <pscredential>] [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-Force] [-PassThru] [-Recurse] [-FromSession <PSSession[]>] [-ToSession <PSSession>] [-WhatIf] [-Confirm] [<CommonParameters>]

重要参数列表:

-Path

指定要复制的项目的路径。

-Destination

指定复制项目的位置的路径。

-Container

指示此 cmdlet 在复制项目时保留容器。默认值为 $True。

-Exclude

以字符串数组形式指定此 cmdlet 从操作中排除的一个或多个项目。

-Filter

指定一个过滤器来限定 Path 参数。

-Include

以字符串数组形式指定此 cmdlet 在操作中包含的一个或多个项目。

-Force

强制 cmdlet 复制无法更改的项目,例如只读文件或隐藏项目。

-Recurse

复制子目录中的项目,而不是子目录本身。将此参数与 Container 参数结合使用。

这是一个如何使用它的简单示例:


Copy-Item -Path <source> -Destination <destination>

此 cmdlet 采用两个参数:文件的源位置和目标位置。 -Path 指定要复制的文件的路径。这可以是本地或远程文件路径,-Destination 指定要将文件复制到的位置。这也可以是本地或远程路径。

例如,如果要将名为“AppLog.txt”的文件从“C:\Source”文件夹复制到“C:\Destination”文件夹,则可以使用以下命令:


Copy-Item -Path "C:\Source\AppLog.txt" -Destination "C:\Destination"

请注意,Copy-Item cmdlet 默认情况下会覆盖目标文件(如果存在)!但是,如果您想保留原始文件并避免覆盖,可以使用以下方法:


#Parameters
$SourceFile = "C:\Temp\AppLog.txt"
$DestinationFile = "C:\Temp\Archive\AppLog.txt"

#Check if the Target file exists
If (-not (Test-Path -Path $DestinationFile)) {
    Copy-Item -Path $sourceFile -Destination $DestinationFile
}
Else {
    Write-Host -f Yellow "The Destination File Already Exists!"
}

PowerShell 复制和重命名文件

您可以将文件复制到同一路径或不同文件夹来重命名。例如。,


Copy-Item -Path "C:\Source\example.txt" -Destination "C:\Destination\NewExample.log"

也适用: Copy-Item -Path “C:\Source\example.txt” -Destination “C:\Source\example-v2.txt”

复制文件之前确保目标文件夹

如果目标文件夹不存在,cmdlet 将抛出错误“Copy-Item:无法找到路径 的一部分”。为了避免这种情况,您必须使用 Test-Item、New-Item 和 Copy-Item cmdlet 的组合来创建整个目标文件夹树(如果不存在)。


#Function to copy a File to given path
Function Copy-File {
    [CmdletBinding()]
    Param
    (
        # The path to the Source File location
        [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,Position=0)]
        [string] $SourceFilePath,

        # The destionaion Folder where the file to be copied
        [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)]        
        [string] $DestinationFolderPath
    )

    #Check if the Destination Folder exists
    If (-not (Test-Path $DestinationFolderPath)) {
        New-Item -ItemType Directory -Path $DestinationFolderPath | Out-Null
        Write-Host "Ensured the $DestinationFolderPath!" -f Yellow
    } 
    #Copy the File to Destination Folder
    Copy-Item -Path $SourceFilePath -Destination $DestinationFolderPath
    Write-Host "File $SourceFilePath Has been Copied to $DestinationFolderPath!" -f Green
}

#Call the function
Copy-File -SourceFilePath "C:\Temp\AppLog.zip" -DestinationFolderPath "C:\Temp2\Logs"

[玩转系统] 如何使用PowerShell复制文件?

在 PowerShell 中复制多个文件

您还可以使用通配符一次复制多个文件。例如,以下命令会将所有文本文件从“C:\Source”文件夹复制到“C:\Destination”文件夹。


Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"

同样,要将所有文件(不包括任何子文件夹及其文件)从源复制到目标文件夹,请使用以下命令:


Copy-Item -Path "C:\Source\*.*" -Destination "C:\Destination"

递归复制所有文件和文件夹

Copy-Item cmdlet 还可用于复制整个目录及其内容。为此,您可以使用 -Recurse 参数,该参数告诉 PowerShell 复制目录的内容及其文件和子目录。


Copy-Item -Path "C:\Source" -Destination "C:\Destination" -Recurse -Force

请注意,如果目标文件夹已存在,则必须使用 -Force 开关与目标文件夹合并!上述 cmdlet 将合并源文件夹与目标文件夹,并覆盖任何同名文件。否则,您将得到“Copy-Item:具有指定名称 C:\Temp2\Logs 的项目已存在”。错误。

如果您想复制没有根文件夹的文件夹内容怎么办?使用:


Copy-Item -Path "C:\Temp\Logs\*" -Recurse -Force -Destination "C:\Logs"

使用 PowerShell 将文件从多个文件夹复制到一个文件夹

以下是一个 PowerShell 脚本,可用于将多个文件从源文件夹复制到目标文件夹:


Copy-Item -Path C:\Logs\Log-1.txt,C:\temp\log-2.txt -Destination C:\LogsV2

同样,您可以使用 PowerShell 从多个文件夹复制所有文件,如下所示:


Copy-Item -Path "C:\Temp\Logs V2\*","C:\Temp\Logs V3\*" -Destination "C:\Logs"-Recurse -force

PowerShell 包含或排除要复制的文件

您还可以使用 -Include 或 -Exclude 开关以及通配符来过滤要复制的文件。例如,您可以使用 -Ininclude 仅复制具有特定扩展名的文件:


Copy-Item -Path "C:\Temp\*" -Destination "C:\Logs" -Include "*.log"

该脚本将仅复制带有扩展名日志的文件。

您还可以使用 -Exclude 从复制过程中排除某些文件或文件夹:


Copy-Item -Path "C:\Temp\*" -Destination "C:\Logs" -Exclude "*.bak","*.tmp"

该脚本将复制除扩展名为 .bak 的文件和文件夹以及名为“temp”的文件夹之外的所有文件和文件夹。

包起来

总之,Copy-Item cmdlet 是在 PowerShell 中复制文件的强大工具。只需使用几个简单的命令,用户就可以快速轻松地在文件夹或位置之间传输文件。通过了解基本语法和可用选项,您可以轻松地将文件从一个位置复制到另一个位置。这使得 PowerShell 成为需要以最少的努力快速、轻松地复制文件的管理员的宝贵工具。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯