Robocopy ForEach,但是路径完全不同吗?

时间:2019-06-06 17:49:42

标签: arrays if-statement foreach robocopy

我们有一个PowerShell GUI表单,其中有一些对应于文件夹的复选框,如果选中了该复选框,则将对该特定文件夹执行Robocopy。例如,如果选中了checkbox1,则C:\ Source \ Folder1将被复制到C:\ Target \ Folder1,依此类推。当前,这与ForEach循环完美配合,该脚本从每个复选框Text中获取文件夹名称。 但是,很快我们将获得不同的文件结构,因此路径将不再相同(文件夹将不再像现在一样位于同一文件夹下)。例如,文件夹1可能会移动到C:\ Plans \ folder1,而文件夹2可能会移动到C:\ ForDesignDept \ folder2-这些只是示例。

解决方案的想法:我们意识到可以在复选框中添加.Tag属性并添加任何数据,例如文件路径,但是我们至少需要2个值才能定义源路径和目标路径。

我们相信只需修改下面的当前函数显示就可以做到这一点?

TL; DR: 我们需要修改当前的ForEach循环,以使每个循环使用不同的路径,而不是像现在一样将“ folder1,folder2等”都位于同一文件夹下的相同路径。

任何帮助将不胜感激! 谢谢

我们尝试了向.Tag属性添加多个值的不同变体,如下所示:我们尝试了双引号,单引号等等。 下一个问题可能是Powershell会说未指定目的地,因为它会认为.Tag属性只是1个值。 $ checkbox1.Tag =“ C:\ Plans \ Folder1”“ C:\ ForDesignDept \ Folder1”

如此处所示,脚本从每个复选框“文本”中获取文件夹名称。

{
    $checkboxes = @($checkbox1, $checkbox2, $checkbox3)

    foreach ($checkbox in $checkboxes) 
    {
        if ($checkbox.Checked) 
        {
            robocopy "c:\source\$($checkbox.Text)" "c:\target\$($checkbox.Text)" /njh /njs /ndl /np /tee | ForEach-Object { $outputBox.AppendText($_ + "`r`n") }
        } 
        else 
        {
            $outputBox.AppendText("$($checkbox.Text) NOT SELECTED" + "`r`n")
        }
    $checkbox.Checked=$False
    }
}

除了使用不相同的路径外,期望与当前解决方案具有相同的行为。没有具体的错误,因为我们只是不知道该怎么做。

0 个答案:

没有答案