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 xcopy
junto com a exclude
opção:
xcopy www backup /exclude:except.txt
except.txt
conté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.obj
excluirá todos os arquivos abaixo do diretórioobj
ou todos os arquivos com a.obj
extensão, respectivamente.
Fontexcopiar- Copie arquivos e/ou árvores de diretórios para outra pasta.
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
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:
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_script
pelo seu. Não se esqueça de \
dobrar \\
.
Em seguida, clique duas vezes no arquivo .reg!
E está feito.