PowerShell Copy-Item
最后修改:2025 年 2 月 15 日
在本文中,我们将介绍PowerShell中的Copy-Item
cmdlet。此cmdlet将文件和目录从一个位置复制到另一个位置。
Copy-Item基础知识
Copy-Item
cmdlet将一个项从一个位置复制到另一个位置。它可以复制文件、目录和注册表项。该cmdlet会保留原始项并在目标位置创建副本。支持使用通配符复制多个项。
基本文件复制
使用Copy-Item
的最简单方法是指定源和目标路径。这将一个文件复制到目标位置。目标可以是文件名或目录。如果目标是目录,文件将保留其原始名称。
Copy-Item -Path "C:\data\report.txt" -Destination "C:\backup\"
此命令将report.txt从C:\data复制到C:\backup。如果backup目录不存在,则会发生错误。文件将保留其原始名称。
复制并重命名
您可以通过在目标路径中指定新名称来在复制文件时重命名文件。这将在同一目录或不同目录中创建具有不同名称的副本。原始文件保持不变。
Copy-Item -Path "C:\data\report.txt" -Destination "C:\backup\report_backup.txt"
这会将report.txt复制到backup目录中的report_backup.txt。操作后,两个文件都将存在。目标目录必须存在。
复制多个文件
可以使用通配符复制匹配模式的多个文件。星号(*)匹配任何字符序列。这对于复制具有相似名称或扩展名的文件组很有用。
Copy-Item -Path "C:\data\*.log" -Destination "C:\backup\"
这会将C:\data中的所有.log文件复制到C:\backup。每个文件都保留其原始名称。仅复制匹配模式的文件。
递归复制目录
要复制目录及其内容,请使用-Recurse参数。这将复制所有文件和子目录。没有此参数,仅复制空目录。如果目标目录不存在,则会创建它。
Copy-Item -Path "C:\projects\" -Destination "C:\backup\projects\" -Recurse
这会将整个projects目录复制到backup位置。包含所有文件和子目录。对于大型目录,此操作可能需要一些时间。
强制覆盖
默认情况下,Copy-Item
不会覆盖现有文件。使用-Force参数可以覆盖现有项。当您需要确保目标与源匹配时,这很有用。请谨慎操作,以免数据丢失。
Copy-Item -Path "C:\data\report.txt" -Destination "C:\backup\" -Force
此命令将覆盖backup目录中的report.txt(如果存在)。如果没有-Force,如果文件存在,复制将失败。原始文件保持不变。
过滤复制
您可以将Copy-Item
与其他cmdlet结合使用以进行高级复制。此示例仅复制最近7天内修改过的文件。Get-ChildItem在复制之前过滤文件。管道传递过滤后的结果。
Get-ChildItem -Path "C:\data\" -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } | Copy-Item -Destination "C:\backup\"
这仅复制上周修改过的文件。管道首先过滤,然后复制。这种方法对于大型目录非常有效。
复制到远程计算机
Copy-Item
可以使用PowerShell远程处理将文件复制到远程计算机。-ToSession参数指定远程会话。这需要与远程计算机建立已建立的PSSession。
$session = New-PSSession -ComputerName "Server01" Copy-Item -Path "C:\data\report.txt" -Destination "C:\backup\" -ToSession $session Remove-PSSession $session
这会将report.txt复制到Server01的backup目录。必须先建立会话。完成后务必清理会话。
来源
在本文中,我们已经介绍了PowerShell中的Copy-Item cmdlet。
作者
列出 所有 PowerShell 教程。