酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

vb.net,读取问文件夹内的图片和视频,按照exif的拍摄日期分类到不同年月的文件夹内,如果没有exif信息则采用文件的修改日期,每行注释

好的,这里是一个 VB.NET 脚本,用于读取指定文件夹内的图片和视频,并根据 EXIF 拍摄日期或文件修改日期将其分类到不同年月的文件夹内。 ```vb Imports System.IO Imports System.Drawing.Imaging Module Module1 Sub Main() Dim sourceFolder As String = "C:\Path\To\Your\Folder" ' 源文件夹路径 Dim targetFolder As String = "C:\Path\To\Target\Folder" ' 目标文件夹路径 ' 获取源文件夹中的所有图片和视频文件 Dim files As String() = Directory.GetFiles(sourceFolder, "*.*", SearchOption.AllDirectories) For Each file In files Try ' 获取文件扩展名 Dim extension As String = Path.GetExtension(file).ToLower() ' 检查是否为图片或视频文件 If IsImageOrVideo(extension) Then ' 获取文件的拍摄日期或修改日期 Dim dateTaken As DateTime = GetDateTaken(file) ' 创建目标文件夹路径 Dim yearMonthFolder As String = Path.Combine(targetFolder, dateTaken.ToString("yyyy-MM")) ' 如果目标文件夹不存在,则创建 If Not Directory.Exists(yearMonthFolder) Then Directory.CreateDirectory(yearMonthFolder) End If ' 移动文件到目标文件夹 Dim targetFilePath As String = Path.Combine(yearMonthFolder, Path.GetFileName(file)) File.Move(file, targetFilePath) End If Catch ex As Exception Console.WriteLine($"处理文件 {file} 时出错: {ex.Message}") End Try Next Console.WriteLine("文件分类完成!") End Sub Function IsImageOrVideo(ByVal extension As String) As Boolean ' 定义支持的图片和视频扩展名 Dim imageExtensions As String() = {".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff"} Dim videoExtensions As String() = {".mp4", ".avi", ".mov", ".wmv", ".mkv"} ' 检查文件扩展名是否在支持的列表中 Return imageExtensions.Contains(extension) OrElse videoExtensions.Contains(extension) End Function Function GetDateTaken(ByVal filePath As String) As DateTime ' 尝试从 EXIF 中获取拍摄日期 Using img As Image = Image.FromFile(filePath) Dim propertyItem As PropertyItem = img.GetPropertyItem(36867) ' EXIF DateTimeOriginal 标签 If propertyItem IsNot Nothing Then Dim dateStr As String = Encoding.UTF8.GetString(propertyItem.Value).Trim(Chr(0)) Return DateTime.Parse(dateStr) End If End Using ' 如果没有 EXIF 信息,则使用文件的修改日期 Return File.GetLastWriteTime(filePath) End Function End Module ``` 额外需要注意的逻辑点: 1. 错误处理:在实际应用中,文件可能因为各种原因无法读取或移动,建议增加更详细的错误处理机制,比如记录日志或跳过有问题的文件。 2. 性能优化:如果文件数量较多,可以考虑使用多线程或异步处理来提高效率。 3. 用户交互:可以添加一些用户交互功能,比如提示用户选择源文件夹和目标文件夹,或者显示进度条。 [2024-12-06 13:17:56 | AI写代码神器 | 736点数解答]

相关提问