0

我有一组文件需要移动到备份位置。我正在使用 get-childitem 命令收集所需项目的数组。一旦收集的物品清单准备就绪,我希望使用 robocopy 来移动物品。

$paths=@()

$srcitems = get-childitem $paths 

robocopy $srcitems $dest /move

这行得通吗?
如果不是,将每个单独的项目通过管道传输到 robocopy 的最佳方法是什么?

谢谢
钢铁用户

4

4 回答 4

2
           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,指定其中的文件列表目录。

于 2011-02-16T11:33:42.387 回答
2

类似的情况,张贴以防万一:

我需要复制(移动)一些以“星期五”开头的文件夹和从源到目的地的项目,并想出了这个似乎有效的方法:

Get-ChildItem T:\ParentFolder -Filter "Friday*" -Name | ForEach-Object { robocopy "T:\ParentFolder\$_" "E:\$_" /z /s /MOVE }
  • “Get-ChildItem”部分列出了以“Friday”开头的文件夹名称(-Name)(-Filter “Friday*”)。
  • 这将通过管道传输到 ForEach-Object,robocopy 将为找到的每个实例执行。
  • robocopy /MOVE 参数显然会移动文件夹/文件。

我对 Powershell 还很陌生;不确定是否有更好的方法。该脚本仍在运行,但到目前为止一切顺利。

@walid2mi 使用 Move-Item,我确信它可以工作;我只是喜欢 robocopy b/c 它有一个可重启模式 (/Z)。

于 2011-09-22T02:48:44.170 回答
1

对我有用的语法:

$srcPath = "C:\somefolder"
$dstPath = "C:\someOtherFolder"
$srcitems = get-childitem $srcPath #whatever condition

$srcitems | Select Name | ForEach-Object {robocopy $srcPath $dstPath $_.name}

(根据 robocopy 文档,这很明显)

于 2016-10-25T19:21:15.813 回答
-1

机器复制

Get-ChildItem $paths | Move-Item -Destination $dest  -WhatIf
于 2011-02-16T08:27:15.447 回答