我正在尝试将所有文件从一个文件夹移动.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 /?
(或者文档) 获取命令和选项的列表。