在 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

来源复制- 将文件和/或目录树复制到另一个文件夹。


进一步阅读

答案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 文件!

就完成了。

相关内容