Копировать большое количество файлов, но исключить определенные подпапки в Windows

Копировать большое количество файлов, но исключить определенные подпапки в Windows

Я хочу сделать резервную копию своей рабочей папки, которая в основном содержится в следующей структуре папок:

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

Мне нужно скопировать все проекты, но исключить папку node_modules в каждом проекте. Есть ли простой способ сделать это массово? Так как у меня есть большое количество проектов, которые нужно просмотреть.

Работает на Windows 8.1

решение1

Мне нужно скопировать все проекты, но исключить папку node_modules

Вы можете использовать xcopyвместе с excludeопцией:

xcopy www backup /exclude:except.txt
  • except.txtсодержит список файлов каталогов, которые следует исключить.

за исключением.txt:

node_modules

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

  • Каждый файл может содержать один или несколько полных или частичных путей, которые необходимо исключить.
  • Если любой из них совпадает с любой частью абсолютного пути файла SOURCE, то этот файл будет исключен.
  • Например, указание строки типа \obj\или .objисключит все файлы в каталоге objили все файлы с .objрасширением соответственно.

Источникxcopy- Копировать файлы и/или деревья каталогов в другую папку.


дальнейшее чтение

решение2

Спасибо @DavidPostill за ответ. Это сработало на ура. Однако мне также удалось заставить работать robocopy. Для тех, кому это может помочь, команда была:

robocopy SOURCE DEST /mir /xd node_modules

Source — это папка для копирования, а dest — место назначения. И в самом конце у меня есть node_modules — папка, которую я хочу исключить.

решение3

вконтекстное менюпринадлежащий "файловый менеджер" Я добавилскрипт powershellчто позволяет мнедублируйте любую папку без node_modules:

введите описание изображения здесь

Вот как это сделать:

Создайте свой файл скрипта 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

Создайте файл реестра: (например: 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\""

Замените C:\\Path of_your_scriptна свое. Не забудьте удвоить \на \\.

Затем дважды щелкните по файлу .reg!

И это сделано.

Связанный контент