1

Моей конечной целью является зеркалирование папки и ее подкаталогов с ограничением только копирования файлов с расширениями: sln, vcxproj, cs, cpp, hpp, c и h. Слишком много подпапок, чтобы управлять этим вручную. Я попытался использовать команду robocopy в powershell, однако в Powershell 1.0 это невозможно. Как мне достичь своей цели в Powershell?

Импровизированное решение

Мне удалось позаимствовать некоторый код и внести в него небольшие изменения. Это не робокопия как таковая, но ей удается приблизиться к тому, что я хочу. Примечание: это просто код, который я скопировал, а не код, который я изменил.

$Source = '\\ServerA\Folder\Root\'
$Destination = '\\ServerB\Folder\Root'

$SrcEntries = Get-ChildItem $Source -Recurse
foreach($Src in $SrcEntries)
{
 $SrcPath = $Src.fullname
 $DesPath = $SrcPath.Replace($Source, $Destination)

 #Check is source exist in dest
 if(test-Path $DesPath)
 {
  #if source was change 
  If(Compare-Object $SrcPath $DesPath) 
  {
   #then replace
   Copy-Item $SrcPath $DesPath -Force
  }
 }
 else
 {         
  #if dont exist then copy too
  Copy-Item $SrcPath $DesPath
 }
}

$DesEntries = Get-ChildItem $Destination -Recurse
foreach($Des in $DesEntries)
{
 $DesPath = $Des.fullname
 $SrcPath = $DesPath.Replace($Destination, $Source)

 if((test-Path $SrcPath) -eq $false)
 {
  #if source dont exist then delete dest
  Remove-Item $DesPath
 }
}

1 ответ1

3

Robocopy - это не команда PowerShell. Это утилита командной строки Windows, и она не включена в XP.

Чтобы получить Robocopy для XP, вам необходимо получить инструменты для набора ресурсов Windows Server 2003 . Получив его, вы сможете использовать его в PowerShell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .