No Windows, como copiar um subdiretório específico de cada diretório?

0

No Windows, como posso copiar de source para destino , com o filtro de diretórios. O filtro deve ser parecido com isto: *\app\src , o que significa: para cada subpasta source ("each" significa correspondência * ) localize a subpasta app\src e copie-a para destino preservando a estrutura de pastas.

Eu tentei o robocopy, mas ele diz ERROR: Parâmetro inválido nº 3: " \ app \ src \" *:

robocopy C:\Projects C:\backup  *\app\src\

Como fazer isso? (não necessariamente em robocopy)

    
por camcam 24.06.2017 / 09:41

1 resposta

0

Eu usaria um arquivo de lote,

  • como um /s dir recursivo só pode ter um nome
  • findstr é usado para corresponder apenas as linhas que terminam com as duas dirs
  • na cadeia encontrada do diretório, o nome base é trocado por dest para formar o nome da pasta de destino adequada.
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

Set "Base=C:\Projects\"
Set "Dest=C:\backup\"
Set "Dir1=app"
Set "Dir2=src"

For /f "delims=" %%A in (
  'Dir /B/S/AD "%Base%\%Dir2%" ^|findstr /LEI "\%Dir1%\%Dir2%" '
) Do (
  Set "CopyTo=%%A"
  Set "CopyTo=!CopyTo:%Base%=%Dest%!\"
  If not Exist "!CopyTo!" Echo MD "!CopyTo!"
  Echo robo/x/copy "%%~fA\*" "!CopyTo!"
)

Se a saída parecer OK, remova os ecos nas duas últimas linhas e ajuste o comando de cópia.

    
por 24.06.2017 / 12:24

Tags