Переместить файлы из нескольких папок в соответствующую папку назначения - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь выяснить, как сделать ForEach при перемещении файлов из источника в место назначения.

Я устал от приведенного ниже кода, но не могу заставить его работать: (

$SrcLocations = @('Src1','Src2','Src3')
$DestLocations = @('dest1','dest2','dest3')


function Move-Files {
  Write-Output "$(Get-TimeStamp): $SrcLocations file move to Remote Storage started" | Out-file $OutputLogFile -append
  $FileMoves = get-childitem $SrcLocations
  Foreach ($file in $FileMoves) {
  Move-Item -Path $SrcLocations -Destination $DestLocations -force
  if (!$?) {
  "File $($file.name) failed moving to Remote Storage" | out-file $OutputLogFile -append
           }
  }
 Time-Delay-Move-Files
 Write-Output "$(Get-TimeStamp): File moved to $DestLocations" | Out-file $OutputLogFile -append
}

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Спасибо:)

Добавлено Move-Item и отлично работает.

$SrcLocations = @('Src1','Src2','Src3')
$DestLocations = @('dest1','dest2','dest3')


For($i = 0; $i -lt $SrcLocations.Count; $i++){
    Move-Item -Path $($SrcLocations[$i]) -Destination $($DestLocations[$i]) -force
    Write-Host "Moving $($SrcLocations[$i]) to $($DestLocations[$i])"
}
0 голосов
/ 29 августа 2018

For-Each не идеален в вашем случае, потому что вам нужно значение из массива источника и назначения. Предполагая, что оба массива имеют одинаковую длину, вы можете использовать цикл For, например:

$SrcLocations = @('Src1','Src2','Src3')
$DestLocations = @('dest1','dest2','dest3')


For($i = 0; $i -lt $SrcLocations.Count; $i++){
    Write-Host "Moving $($SrcLocations[$i]) to $($DestLocations[$i])"
}

Выходы

Moving Src1 to dest1
Moving Src2 to dest2
Moving Src3 to dest3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...