Quiero hacer una copia de seguridad de mi carpeta de trabajo, que se encuentra principalmente dentro de una estructura de carpetas como:
www
- project 1
- assets
- node_modules
- project 1
- assets
- node_modules
- project 1
- assets
- node_modules
Necesito copiar todos los proyectos pero excluir la carpeta node_modules dentro de cada proyecto. ¿Existe una manera fácil de hacer esto de forma masiva? Ya que tengo una gran cantidad de proyectos por realizar.
Ejecutándose en Windows 8.1
Respuesta1
Necesito copiar todos los proyectos pero excluir la carpeta node_modules
Puedes utilizar xcopy
junto con la exclude
opción:
xcopy www backup /exclude:except.txt
except.txt
contiene la lista de archivos de directorios que se excluirán.
excepto.txt:
node_modules
/EXCLUDE:file1[+file2][+file3]...
- Cada uno de los archivos puede contener una o más rutas de acceso completas o parciales que se excluirán.
- Cuando alguno de estos coincida con cualquier parte de la ruta absoluta de un archivo FUENTE, ese archivo será excluido.
- Por ejemplo, especificar una cadena como
\obj\
o.obj
excluirá todos los archivos debajo del directorioobj
o todos los archivos con la.obj
extensión respectivamente.
Fuentexcopiar- Copie archivos y/o árboles de directorios a otra carpeta.
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
Respuesta2
Gracias a @DavidPostill por su respuesta. Funcionó de maravilla. Sin embargo, también logré que la robocopia funcionara. Para aquellos a quienes pudiera ayudar, el comando era:
robocopy SOURCE DEST /mir /xd node_modules
El origen es la carpeta a copiar y el destino es el destino. Y justo al final tengo node_modules como la carpeta que quiero excluir.
Respuesta3
En elmenú contextualdel "explorador de archivos" Agregué unsecuencia de comandos de powershelleso me permiteduplicar cualquier carpeta sin node_modules:
He aquí cómo hacerlo:
Cree su archivo de secuencia de comandos de 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
Cree un archivo de registro: (ej 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\""
Reemplace C:\\Path of_your_script
por el suyo. No olvides doblar \
por \\
.
Luego, haga doble clic en el archivo .reg.
Y ya está.