我有一组文件需要移动到备份位置。我正在使用 get-childitem 命令收集所需项目的数组。一旦收集的物品清单准备就绪,我希望使用 robocopy 来移动物品。
$paths=@()
$srcitems = get-childitem $paths
robocopy $srcitems $dest /move
这行得通吗?
如果不是,将每个单独的项目通过管道传输到 robocopy 的最佳方法是什么?
谢谢
钢铁用户
我有一组文件需要移动到备份位置。我正在使用 get-childitem 命令收集所需项目的数组。一旦收集的物品清单准备就绪,我希望使用 robocopy 来移动物品。
$paths=@()
$srcitems = get-childitem $paths
robocopy $srcitems $dest /move
这行得通吗?
如果不是,将每个单独的项目通过管道传输到 robocopy 的最佳方法是什么?
谢谢
钢铁用户
Usage :: ROBOCOPY source destination [file [file]...] [options]
source :: Source Directory (drive:\path or \\server\share\path).
destination :: Destination Dir (drive:\path or \\server\share\path).
file :: File(s) to copy (names/wildcards: default is "*.*").
Robocopy 需要一个源目录、一个目标目录和一个文件规范作为参数。如果不知道您的“收集物品清单”是什么样的,就很难给出明确的答案。如果它是源目录,那么您可以通过调用 robocopy 来获取该列表,并为文件名硬编码通配符规范。如果您有文件列表,则需要将它们拆分为目录/文件(我会使用拆分路径),并为每个源目录调用 robocopy,指定其中的文件列表目录。
类似的情况,张贴以防万一:
我需要复制(移动)一些以“星期五”开头的文件夹和从源到目的地的项目,并想出了这个似乎有效的方法:
Get-ChildItem T:\ParentFolder -Filter "Friday*" -Name | ForEach-Object { robocopy "T:\ParentFolder\$_" "E:\$_" /z /s /MOVE }
我对 Powershell 还很陌生;不确定是否有更好的方法。该脚本仍在运行,但到目前为止一切顺利。
@walid2mi 使用 Move-Item,我确信它可以工作;我只是喜欢 robocopy b/c 它有一个可重启模式 (/Z)。
对我有用的语法:
$srcPath = "C:\somefolder"
$dstPath = "C:\someOtherFolder"
$srcitems = get-childitem $srcPath #whatever condition
$srcitems | Select Name | ForEach-Object {robocopy $srcPath $dstPath $_.name}
(根据 robocopy 文档,这很明显)
Get-ChildItem $paths | Move-Item -Destination $dest -WhatIf