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除外するファイルのディレクトリのリストが含まれます。

except.txt:

node_modules

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

  • 各ファイルには、除外する 1 つ以上の完全パス名または部分パス名を含めることができます。
  • これらのいずれかがソース ファイルの絶対パスの一部と一致する場合、そのファイルは除外されます。
  • たとえば、\obj\またはのような文字列を指定すると、それぞれ.objディレクトリの下にあるすべてのファイルobj、または拡張子を持つすべてのファイルが除外されます.obj

ソースxコピー- ファイルやディレクトリ ツリーを別のフォルダーにコピーします。


参考文献

答え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\""

を自分のものに置き換えてください。 を 2 倍にすることC:\\Path of_your_scriptを忘れないでください。\\\

次に、.reg ファイルをダブルクリックします。

そして完了です。

関連情報