管道输出从get-childitem到robocopy

时间:2011-02-16 06:32:07

标签: powershell powershell-v2.0 robocopy

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

$paths=@()

$srcitems = get-childitem $paths 

robocopy $srcitems $dest /move

这有用吗?
如果不是管道到每个单独项目到robocopy的最佳方法是什么?

感谢
Steeluser

4 个答案:

答案 0 :(得分: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的ivocation来预先处理该列表,并对文件名进行硬编码。如果你有一个文件列表,你需要将它们分成目录/文件(我使用拆分路径),并为每个源目录调用robocopy,指定其中的文件列表。目录

答案 1 :(得分:2)

类似的情况,发布以防万一:

我需要复制(移动)一些文件夹,所有文件夹都以“星期五”开头,以及从源到目的地的项目,并提出了似乎有效的文件:

Get-ChildItem T:\ParentFolder -Filter "Friday*" -Name | ForEach-Object { robocopy "T:\ParentFolder\$_" "E:\$_" /z /s /MOVE }
  • “Get-ChildItem”部分列出了文件夹名称(-Name)的开头 与“星期五”(-Filter“Friday *”)。
  • 这会被传送到ForEach-Object,其中robocopy将针对找到的每个实例执行。
  • robocopy / MOVE参数显然会移动文件夹/文件。

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

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

答案 2 :(得分:1)

对我有用的语法:

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

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

(根据robocopy文档显而易见)

答案 3 :(得分:-1)

robocopy

Get-ChildItem $paths | Move-Item -Destination $dest  -WhatIf