即兴解决方案

即兴解决方案

我的最终目标是镜像一个文件夹及其子目录,但限制仅复制扩展名为 sln、vcxproj、cs、cpp、hpp、c 和 h 的文件。子文件夹太多,无法手动管理。我尝试在 powershell 中使用 robocopy 命令,但在 Powershell 1.0 中无法实现。如何在 Powershell 中实现我的目标?

即兴解决方案

我设法借用一些代码并对其进行了一些细微调整。它本身并不是 robocopy,但它设法接近我想要的。注意:这只是我复制的代码,而不是我修改的代码。

$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

Robocopy 不是 PowerShell 命令。它是一个 Windows 命令行实用程序,不包含在 XP 中。

你需要获得Windows Server 2003 资源工具包工具获取适用于 XP 的 Robocopy。获得后,您将能够在 PowerShell 中使用它。

相关内容