【发布时间】:2020-12-08 03:02:32
【问题描述】:
使用 PowerShell,我尝试从本地驱动器通过管道传输文件列表,以便 Copy-Items 可以将它们复制到网络文件夹。以下语句确实找到了我需要的文件,并复制了它们。但是,所有路径信息都会丢失,并且它们都最终在同一个文件夹中。我希望每个文件都以相对路径方式保存在目标位置,其文件路径来自本地磁盘。
因此,例如“c:\users\user_name\Documents\file_1.txt”应复制到“\\server\share\my_folder\users\user_name\Documents\file_1.txt”
事实证明,我的搜索毫无结果。可以修改此语句以实现此目的吗?
Get-ChildItem -Path c:\users\user_name -r | ? {!($_.psiscontainer) -AND $_.lastwritetime -gt (get-date).date} | %{Copy-Item -Path $_.fullname -destination "\\server\share\my_folder" -Recurse -Force -Container}
编辑:
看来 Copy-Item 应该能够做到这一点。以下命令有效:
Copy-Item -Path c:\users\user_name\Documents -Destination "\\server\share\my_folder" -recurse -Force
此命令复制 c:\users\user_name\Documents 及其下的子文件夹中的所有文件、子文件夹和文件。然后它在网络共享上重新创建相对目录结构。似乎第一个命令中的 $_.fullname 参数没有以类似的方式处理。我肯定不会以预期的方式将文件列表传递给 Copy-Item。还有其他建议吗?
【问题讨论】:
-
我建议您改为查看
robocopy -
@iRon - 这不能回答我的问题。我有相对路径信息,我正在尝试在网络文件共享上重新创建该结构。下面 Doug Maurer 指出 Copy-Item 命令无法完成此操作。所以,我想我必须推出自己在 MS-DOS 6.0 中存在的功能。令人失望。
标签: powershell copy-item