Precisa criar um robocopy no Powershell 1.0

1

Meu objetivo final é espelhar uma pasta e seus subdiretórios com a restrição de copiar apenas arquivos com as extensões sln, vcxproj, cs, cpp, hpp, c e h. Existem muitas subpastas para gerenciar isso manualmente. Eu tentei usar o comando robocopy no powershell, no entanto, não é possível no Powershell 1.0. Como posso alcançar meu objetivo no Powershell?

Solução improvisada

Eu consegui emprestou algum código e fez alguns pequenos ajustes nele. Não é robocopy em si, mas está conseguindo chegar perto do que estou procurando. Nota: este é apenas o código que copiei, não o código que modifiquei.

$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
 }
}
    
por torrho 07.04.2014 / 17:55

1 resposta

3

Robocopy não é um comando do PowerShell. É um utilitário de linha de comando do Windows e não está incluído no XP.

Você precisa das Ferramentas do Windows Server 2003 Resource Kit para obter Robocopy para XP. Depois de conseguir, você poderá utilizá-lo no PowerShell.

    
por 07.04.2014 / 19:49