从 Excel 创建一系列 PowerShell 变量以在 Robocopy 中执行
Create a series of PowerShell variables from Excel to execute in Robocopy
使用 PowerShell 模块导入excel 我已经创建了变量并且作业是 运行ning 但有一些注意事项。来自源的数据被转储到目标的根目录中(这是基于我创建的变量的预期 - 这是我寻求帮助的众多领域之一)。
$dataJob01 = Import-Excel "C:\temp\test.xlsx"
ForEach ($project in $dataJob01){
$source = $($dataJob01.Source)
$destination = $($dataJob01.Destination)
robocopy $source $destination /e /copy:DATU /dcopy:DAT /log:C:\temp\log.txt
}
- 有没有办法将“文件夹名称”附加到目标变量?制作
$destination = \server2\share\PROJECTS4401
在问题 1 中的问题解决之前,问题 2 是无关紧要的,但理想情况下我希望作业处理上面 excel 代码段下方的 100 行代码。不幸的是,我编写的代码失败了。就好像源和目标被捆绑在一起而不是在每一行上被处理。我认为 ForEach
合适,但我是菜鸟。
- 当我针对多行 运行 执行此操作时,我没有收到任何输出并且作业失败。
希望我不会以错误的方式解决这个问题,并且有人会为我提供一些指导。
- 有没有办法将“文件夹名称”附加到目标变量?制作
$destination = \server2\share\PROJECTS4401
在这里您可以使用 Join-Path
,它非常适合您的需要:
$destination = Join-Path $project.Destination -ChildPath $project.'Folder Name'
我注意到您在 foreach
循环中使用了 $dataJob01
,这是您用来迭代的数组。尝试改用它(我更改了变量的名称,因此它可以帮助您理解。$line
就是这样)。
$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
}
使用 PowerShell 模块导入excel 我已经创建了变量并且作业是 运行ning 但有一些注意事项。来自源的数据被转储到目标的根目录中(这是基于我创建的变量的预期 - 这是我寻求帮助的众多领域之一)。
$dataJob01 = Import-Excel "C:\temp\test.xlsx"
ForEach ($project in $dataJob01){
$source = $($dataJob01.Source)
$destination = $($dataJob01.Destination)
robocopy $source $destination /e /copy:DATU /dcopy:DAT /log:C:\temp\log.txt
}
- 有没有办法将“文件夹名称”附加到目标变量?制作
$destination = \server2\share\PROJECTS4401
在问题 1 中的问题解决之前,问题 2 是无关紧要的,但理想情况下我希望作业处理上面 excel 代码段下方的 100 行代码。不幸的是,我编写的代码失败了。就好像源和目标被捆绑在一起而不是在每一行上被处理。我认为 ForEach
合适,但我是菜鸟。
- 当我针对多行 运行 执行此操作时,我没有收到任何输出并且作业失败。
希望我不会以错误的方式解决这个问题,并且有人会为我提供一些指导。
- 有没有办法将“文件夹名称”附加到目标变量?制作
$destination = \server2\share\PROJECTS4401
在这里您可以使用 Join-Path
,它非常适合您的需要:
$destination = Join-Path $project.Destination -ChildPath $project.'Folder Name'
我注意到您在 foreach
循环中使用了 $dataJob01
,这是您用来迭代的数组。尝试改用它(我更改了变量的名称,因此它可以帮助您理解。$line
就是这样)。
$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
}