Copie um grande número de arquivos, mas exclua certas subpastas no Windows

Copie um grande número de arquivos, mas exclua certas subpastas no Windows

Quero fazer backup da minha pasta de trabalho, que está contida principalmente em uma estrutura de pastas como:

www
    - project 1
        - assets
        - node_modules
    - project 1
        - assets
        - node_modules
    - project 1
        - assets
        - node_modules

Preciso copiar todos os projetos, mas excluir a pasta node_modules de cada projeto. Existe uma maneira fácil de fazer isso em massa? Como tenho grandes quantidades de projetos para realizar.

Executando no Windows 8.1

Responder1

Preciso copiar todos os projetos, mas excluir a pasta node_modules

Você pode usar xcopyjunto com a excludeopção:

xcopy www backup /exclude:except.txt
  • except.txtcontém a lista de arquivos de diretórios a serem excluídos.

exceto.txt:

node_modules

/EXCLUDE:file1[+file2][+file3]...

  • Cada arquivo pode conter um ou mais nomes de caminho completos ou parciais a serem excluídos.
  • Quando qualquer um deles corresponder a qualquer parte do caminho absoluto de um arquivo SOURCE, esse arquivo será excluído.
  • Por exemplo, especificar uma string como \obj\ou .objexcluirá todos os arquivos abaixo do diretório objou todos os arquivos com a .objextensão, respectivamente.

Fontexcopiar- Copie arquivos e/ou árvores de diretórios para outra pasta.


Leitura adicional

Responder2

Obrigado a @DavidPostill por sua resposta. Funcionou muito bem. No entanto, também consegui fazer a robocópia funcionar. Para aqueles a quem pudesse ajudar, o comando era:

robocopy SOURCE DEST /mir /xd node_modules

Fonte sendo a pasta a ser copiada e destino sendo o destino. E logo no final tenho node_modules como a pasta que quero excluir.

Responder3

Nomenu contextualdo "explorador de arquivos"Eu adicionei umscript do PowerShellque me permiteduplique qualquer pasta sem node_modules:

insira a descrição da imagem aqui

Veja como fazer isso:

Crie seu arquivo de script do PowerShell script.ps1:

$Source=$args[0]
$Position = $Source.lastindexofany("\")
$Destination = $Source.substring(0, $Position + 1)
$FolderName = $Source.substring($Position + 1)
$Destination = "$($Destination)$($FolderName)-DUPLICATE_WITHOUT_NODE_MODULES"
robocopy $Source $Destination /mir /xd node_modules

Crie um arquivo de registro: (ex Add_Script_To_ContextMenu.reg:)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\DupFolderWithoutNodeModules]
@="Duplicate folder without node_modules"

[HKEY_CLASSES_ROOT\Directory\shell\DupFolderWithoutNodeModules\command]
@="C:\\\\Windows\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe -File \"C:\\Path of_your_script\\script.ps1\" \"%L\""

Substitua C:\\Path of_your_scriptpelo seu. Não se esqueça de \dobrar \\.

Em seguida, clique duas vezes no arquivo .reg!

E está feito.

informação relacionada