Você pode usar o PowerShell! Salve o script a seguir como um arquivo .ps1
e siga a seção Habilitando scripts em wiki de tags do PowerShell .
$sharepaths = gwmi -Class 'Win32_Share' | ? {-not $_.Name.EndsWith('$')} | % {$_.Path.ToUpperInvariant()} | sort
$lastroot = $null
ForEach ($path In $sharepaths) {
If ($lastroot -ne $null -and $path.StartsWith($lastroot)) {Continue}
$lastroot = $path
# Run backup command here
}
Funciona obtendo todas as instâncias de Win32_Share
WMI (como seu arquivo de lote), filtrando-as para aquelas que não terminam em $
(que marca um compartilhamento oculto), extrai apenas as caminho maiúsculo e classifica a lista de caminhos. Essa classificação é importante quando fazemos iterações na lista. Se o caminho atual começar com o caminho do último compartilhamento "raiz", nós o ignoramos, já que já foi feito o backup.
Você precisa substituir a linha de comentário #
pelo procedimento que executa o backup. Nesse ponto, a variável $path
contém o caminho local para o compartilhamento. Você também pode executar utilitários que não sejam do PowerShell, como xcopy
ou robocopy
.
Como alternativa, você pode substituir essa linha apenas por $path
, que retorna o caminho do compartilhamento atual para o chamador do script. Nessa estratégia, você chamaria o script PowerShell do lote e faria algo com cada linha (isto é, cada caminho) retornado, usando um loop de lote normal. Por exemplo, se você nomeou o script acima shareroots.ps1
, pode executá-lo da seguinte forma:
powershell .\shareroots.ps1