Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Excel创建一系列PowerShell变量以在Robocopy中执行_Excel_Powershell_Variables_Robocopy - Fatal编程技术网

从Excel创建一系列PowerShell变量以在Robocopy中执行

从Excel创建一系列PowerShell变量以在Robocopy中执行,excel,powershell,variables,robocopy,Excel,Powershell,Variables,Robocopy,使用PowerShell模块importexcel,我已经创建了变量,作业正在运行,但有一些警告。来自源的数据被转储到目标的根目录中(这是基于我创建的变量而期望的,这是我请求帮助的许多领域之一) 是否有方法将“文件夹名称”附加到目标变量?制作$destination=\\server2\share\PROJECTS\304401 在问题1中的问题解决之前,问题2是不相关的,但理想情况下,我希望作业处理上面excel代码段下方的100行。不幸的是,我所写的代码失败了。这就好像源和目标被捆绑在一起,

使用PowerShell模块importexcel,我已经创建了变量,作业正在运行,但有一些警告。来自源的数据被转储到目标的根目录中(这是基于我创建的变量而期望的,这是我请求帮助的许多领域之一)

  • 是否有方法将“文件夹名称”附加到目标变量?制作
    $destination=\\server2\share\PROJECTS\304401
  • 在问题1中的问题解决之前,问题2是不相关的,但理想情况下,我希望作业处理上面excel代码段下方的100行。不幸的是,我所写的代码失败了。这就好像源和目标被捆绑在一起,而不是在每一行上被处理。我认为ForEach是合适的,但我是个笨蛋

  • 当我在多行上运行时,我没有收到任何输出,作业失败
  • 希望我没有走错方向,有人给了我一些建议。

    • 是否有方法将“文件夹名称”附加到目标变量?制作
      $destination=\server2\share\PROJECTS\304401
    在这里,您可以使用
    连接路径
    ,它非常适合您的需要:

    $destination = Join-Path $project.Destination -ChildPath $project.'Folder Name'
    
    我注意到您在
    foreach
    循环中使用了
    $dataJob01
    ,这是用于迭代的数组。试着改用这个(我更改了变量的名称,这样可以帮助您理解。
    $line
    正是这样)


    ForEach
    创建了一个
    $project
    变量,但从未使用过。这是为什么?我只是偶然发现了这一点,但写出来的略有不同。
    $destination=-join($($project.destination),$($project.foldername'))
    ,但robocopy似乎忽略了文件,只覆盖了目录。谢谢你,因为这非常有帮助,而且你的方法看起来更干净。现在来和机器人对抗。感谢you@mrn3ff没问题,我很高兴它能为您工作:)@mrn3ff之所以
    $destination=-join($($project.destination),$($project.Folder Name'))
    无法工作,是因为您创建的是
    数组而不是
    字符串。如果在本例中使用
    -join
    运算符,则可以执行
    $destination=$project.destination,$project.Folder Name'-join'
    ,考虑到
    $project.destination
    以反斜杠结尾,但建议100%使用
    连接路径,因为它可以避免可能的错误:)
    
    $destination = Join-Path $project.Destination -ChildPath $project.'Folder Name'
    
    $xlsx = Import-Excel "C:\temp\test.xlsx"
    
    ForEach ($line in $xlsx)
    {
        $source = $line.Source
        $destination = Join-Path $line.Destination -ChildPath $line.'Folder Name'
    
        robocopy $source $destination /e /copy:DATU /dcopy:DAT /log:C:\temp\log.txt
    }