使用 PowerShell 递归复制文件夹中的所有音频文件,同时保持目录结构完整

使用 PowerShell 递归复制文件夹中的所有音频文件,同时保持目录结构完整

我正在尝试将所有文​​件从一个文件夹移动.mp3.wav另一个文件夹,同时保持文件的相对路径保持不变。

想象一个如下所示的目录结构:

DirA\
  subfolder_1\
    song.mp3
    subfolder_subfolder\
      dj.wav
  somefile.txt
  kittens.jpg
  subfolder_2\
    txt.png
  bass.wav

我想将文件从DirA复制到DirB,因此DirB看起来像:

DirB\
  subfolder_1\
    song.mp3
    subfolder_subfolder\
      dj.wav
  bass.wav

任何不包含音频文件的文件夹都不应被复制。

我可以为此或类似的东西编写一个 Python 或 Node.JS 脚本,但我希望有一个仅使用 PowerShell 的更简单的解决方案。

答案1

使用内置的robocopy.exe通配符列表:

robocopy "x:\source_dir" "y:\dest_dir" *.wav *.mp3 /S

/S将会递归,但是不是创建空文件夹(无法匹配通配符)。

Robocopy 在取消后可恢复,并且可以/将跳过之前复制的文件,因此可以使用相同的命令刷新文件夹树。它还将采用 UNC 路径 ( //server/path)

/MIR或者/purge可用于删除源中不再存在的任何目标文件。

robocopy /?(或者文档) 获取命令和选项的列表。

相关内容