如何在 PowerShell 中将文件从一个文件夹复制到另一个文件夹?
您需要将文件从一个文件夹复制到另一个文件夹吗?在 PowerShell 中,这很容易实现。在本教程中,我将向您展示如何使用各种方法在 PowerShell 中将文件从一个文件夹复制到另一个文件夹。
要在 PowerShell 中将文件从一个文件夹复制到另一个文件夹,您可以使用 Copy-Item cmdlet。例如,Copy-Item -Path “C:\Source\file.txt” -Destination “C:\Destination” 会将 file.txt 从源文件夹复制到目标文件夹。对于多个文件或目录,包含通配符或使用 -Recurse 参数复制整个目录内容,保留结构。
使用 Copy-Item 在 PowerShell 中将文件从一个文件夹复制到另一个文件夹
在 PowerShell 中将文件从一个文件夹复制到另一个文件夹的最简单方法是使用 Copy-Item cmdlet。此 cmdlet 旨在将文件、文件夹甚至注册表项从一个位置复制到另一个位置。以下是如何使用 Copy-Item 复制单个文件的基本示例:
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"此命令会将 file.txt 从 C:\Source 目录复制到 C:\Destination 目录。如果目标文件已存在,PowerShell 将默认覆盖它。
当我使用 VS code 执行脚本后,您可以在下面的屏幕截图中看到输出:
将多个文件从一个文件夹复制到另一个文件夹
要将多个文件从一个文件夹复制到 PowerShell 中的另一个文件夹,可以使用通配符。例如,要将所有 .txt 文件从一个文件夹复制到另一个文件夹,您可以使用以下命令:
Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"此命令会将所有扩展名为 .txt 的文件从 C:\Source 目录复制到 C:\Destination 目录。
递归复制
如果要复制PowerShell中目录的所有内容(包括子目录),可以使用-Recurse参数:
Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -Recurse此命令会将所有文件和文件夹从 C:\Source 复制到 C:\Destination,并保持目录结构。
保留权限
要在复制时保留文件权限,请使用 -Force 参数:
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -Force这将确保文件的原始安全权限保留在新位置。
先进的复印技术
通过过滤复制文件
PowerShell 允许您根据某些条件或过滤器复制文件。例如,如果您想复制过去 7 天内修改过的文件,您可以执行以下操作:
Get-ChildItem -Path "C:\Source" -Recurse |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } |
Copy-Item -Destination "C:\Destination"在此脚本中,Get-ChildItem 检索源目录中的所有项目,Where-Object 根据上次写入时间过滤它们,Copy-Item 将过滤后的项目复制到目标文件夹。
将复制项目与新项目相结合
有时,在 PowerShell 中将文件从一个文件夹复制到另一个文件夹之前,您需要确保目标目录存在。您可以将 Copy-Item 与 New-Item 结合起来来执行此操作:
New-Item -Path "C:\Destination" -ItemType Directory -Force
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"
如果目标目录不存在,New-Item cmdlet 将创建目标目录;如果目录已存在,-Force 参数可确保它不会引发错误。
使用 Robocopy
要进行更可靠的文件复制,特别是对于较大的文件或大量文件,您可以使用 Robocopy(可靠的文件复制),它是 Windows 附带的命令行实用程序。以下是在 PowerShell 脚本中使用它的方法:
robocopy C:\Source C:\Destination /E/E 参数告诉 Robocopy 复制子目录,包括空目录。
在 PowerShell 中从一个文件夹复制到另一个文件夹时的错误处理
在 PowerShell 中将文件从一个文件夹复制到另一个文件夹时,处理错误非常重要。您可以使用 -ErrorAction 参数指定 PowerShell 应如何处理错误。例如,要在发生错误时继续复制,您可以使用:
Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction Continue如果要将错误记录到文件中,可以重定向错误输出:
Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction SilentlyContinue 2> "C:\log.txt"结论
将文件从一个文件夹复制到另一个文件夹是 PowerShell 可以轻松完成的一项常见要求。您可以使用 PowerShell 的基本 Copy-Item cmdlet 或更高级的技术,例如过滤和 Robocopy。
在本 PowerShell 教程中,我通过示例解释了如何使用不同的方法在 PowerShell 中将文件从一个文件夹复制到另一个文件夹。
