将子文件夹中的所有文件移动到另一个文件夹
我的源路径是 C:\Music\
,其中有数百个名为 Album-1、Album-2 等的文件夹。
我想要做的是创建一个名为 Consolidated
的文件夹> 在我的源路径中。
然后我想将专辑中的所有文件移动到 Consolidated
文件夹中,这样我就可以将所有音乐文件放在一个文件夹中。
我该怎么做?
My source path is C:\Music\
in which I have hundreds of folders called Album-1, Album-2 etc.
What I want to do is create a folder called Consolidated
in my source path.
And then I want to move all the files inside my albums to the folder Consolidated
, so that I get all the music files in one folder.
How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
尝试这样
它将获取“C:\Music”文件夹中的所有文件(包括子文件夹中的文件)并将它们移动到目标文件夹。
SearchOption.AllDirectories
将递归搜索所有子文件夹。Try like this
It will get all the files in the "C:\Music" folder (including files in the subfolder) and move them to the destination folder. The
SearchOption.AllDirectories
will recursively search all the subfolders.基本上,这可以通过 Directory.Move 来完成:
没有看到任何理由,为什么你不应该使用这个函数。它是递归的并且速度优化的
Basically, that can be done with Directory.Move:
don't see any reason, why you shouldn't use this function. It's recursive and speed optimized
您可以使用 Directory 对象来执行此操作,但如果您在多个子目录中具有相同的文件名(例如 album1\1.mp3、album2\1.mp3),则可能会遇到问题,因此您可能需要一些额外的逻辑来在名称上添加一些独特的内容(例如album1-1.mp4)。
You can use the Directory object to do this, but you might run into problems if you have the same file name in multiple sub directories (e.g. album1\1.mp3, album2\1.mp3) so you might need a little extra logic to tack something unique onto the names (e.g. album1-1.mp4).
像这样的事情应该会让你滚动。您必须添加错误检查以及其他内容(如果源代码中有一个名为“Consolidated”的子目录怎么办?如果 Consolidated 已经存在怎么办?等等)这是来自内存的,因此请原谅任何语法错误等。
Something like this should get you rolling. You'll have to add error checking and what not (What if there is a subdirectory of source named "Consolidated"? What if Consolidated already exists? Etc.) This is from memory, so pardon any syntax errors, etc.
我们已经有了用于复制目录结构的变体,因此这只是用于移动的修改版本:
We already had variant for copying directory structure, so this is just modified version of it for moving:
ToCopy值得注意的是,您不能跨卷使用“.move()”方法。
https://learn. microsoft.com/en-us/dotnet/api/system.io.file.move?view=net-6.0
https://learn. microsoft.com/en-us/dotnet/api/system.io.directory.move?view=net-6.0
移动文件:
已测试 1/31/22 .NET4.8 VS2019
ToCopyIt is important to mention that you can't use the ".move()" method across volumes.
https://learn.microsoft.com/en-us/dotnet/api/system.io.file.move?view=net-6.0
https://learn.microsoft.com/en-us/dotnet/api/system.io.directory.move?view=net-6.0
Move files:
Tested 1/31/22 .NET4.8 VS2019
使用一个函数调用将所有文件夹(嵌套或非嵌套)包括其文件复制到另一个文件夹(目标)(static void CopyDirectory(string sourceDir, string destinationDir, bool recursive)):
https://learn.microsoft.com/en-us/dotnet/standard/io/how-复制目录
Copy all the folders (nested or not) including their files to another folder (destination) with one function call (static void CopyDirectory(string sourceDir, string destinationDir, bool recursive)):
https://learn.microsoft.com/en-us/dotnet/standard/io/how-to-copy-directories
您可能会发现这对于删除文件名不同但标题相同的 mp3 很有帮助。
来源自 David @ msdn!
You'll probably find this helpful to dedup your mp3's that have a different file name but same title.
source from David @ msdn!
您循环遍历它们,然后只需运行 Move ,Directory 类也具有列出内容的功能iirc。
You loop through them and then simply run Move, the Directory class have functionality for listing contents too iirc.
MSDN:msdn.microsoft.com/en-us/library/bb762914.aspx
MSDN : msdn.microsoft.com/en-us/library/bb762914.aspx