This commit is contained in:
Chenx221 2024-08-28 19:11:23 +08:00
parent 642e0a2864
commit 0c0d82d311

View File

@ -8,7 +8,6 @@ namespace Comic_CBZ_Helper
{ {
class Program class Program
{ {
private static readonly object lockObject = new();
static void Main() static void Main()
{ {
// 设置控制台的输出编码为UTF-8 // 设置控制台的输出编码为UTF-8
@ -103,13 +102,17 @@ namespace Comic_CBZ_Helper
// 检查漫画文件夹是否存在 // 检查漫画文件夹是否存在
if (!Directory.Exists(comicFolder)) if (!Directory.Exists(comicFolder))
{ {
lock (consoleLock)
{
Console.WriteLine($"漫画文件夹 {comicFolder} 不存在。");
}
throw new DirectoryNotFoundException($"漫画文件夹 {comicFolder} 不存在。"); throw new DirectoryNotFoundException($"漫画文件夹 {comicFolder} 不存在。");
} }
// 临时存储重命名后的文件路径
string tempFolder = Path.Combine(comicFolder, "temp");
// 检查 temp 文件夹是否存在,如果存在,则删除
if (Directory.Exists(tempFolder))
{
Directory.Delete(tempFolder, true); // true 表示递归删除文件夹中的所有内容
}
// 确保漫画文件夹中包含图像文件 // 确保漫画文件夹中包含图像文件
string[] imageFiles = Directory.GetFiles(comicFolder, "*.*", SearchOption.AllDirectories) string[] imageFiles = Directory.GetFiles(comicFolder, "*.*", SearchOption.AllDirectories)
.Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png") || file.ToLower().EndsWith(".webp") || file.ToLower().EndsWith(".avif")) .Where(file => file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".png") || file.ToLower().EndsWith(".webp") || file.ToLower().EndsWith(".avif"))
@ -117,11 +120,8 @@ namespace Comic_CBZ_Helper
if (imageFiles.Length == 0) if (imageFiles.Length == 0)
{ {
lock (consoleLock) Console.WriteLine($"在漫画文件夹 {comicFolder} 中未找到任何图像文件。");
{ return;//stop
Console.WriteLine($"在漫画文件夹 {comicFolder} 中未找到任何图像文件。");
}
continue; // 继续处理下一个漫画文件夹
} }
// Sort the imageFiles using the NaturalSortComparer // Sort the imageFiles using the NaturalSortComparer
@ -133,21 +133,12 @@ namespace Comic_CBZ_Helper
// 检查 CBZ 文件是否已经存在,若存在则跳过当前漫画文件夹的处理 // 检查 CBZ 文件是否已经存在,若存在则跳过当前漫画文件夹的处理
if (File.Exists(cbzFileName)) if (File.Exists(cbzFileName))
{ {
lock (consoleLock) Console.WriteLine($"CBZ 文件 {cbzFileName} 已存在,跳过。");
{ count++;
Console.WriteLine($"CBZ 文件 {cbzFileName} 已存在,跳过。"); processedFolders++;
}
continue; continue;
} }
// 临时存储重命名后的文件路径
string tempFolder = Path.Combine(comicFolder, "temp");
// 检查 temp 文件夹是否存在,如果存在,则删除
if (Directory.Exists(tempFolder))
{
Directory.Delete(tempFolder, true); // true 表示递归删除文件夹中的所有内容
}
// 创建新的 temp 文件夹 // 创建新的 temp 文件夹
Directory.CreateDirectory(tempFolder); Directory.CreateDirectory(tempFolder);
@ -182,29 +173,19 @@ namespace Comic_CBZ_Helper
Directory.Delete(tempFolder, true); Directory.Delete(tempFolder, true);
// 增加日期 // 增加日期
lock (lockObject) currentDate = currentDate.AddHours(7);
{ count++;
currentDate = currentDate.AddHours(7);
count++;
}
lock (consoleLock) Console.WriteLine($"漫画文件夹 {comicFolder} 转换完成。");
{ processedFolders++;
Console.WriteLine($"漫画文件夹 {comicFolder} 转换完成。"); ShowProgress(processedFolders, totalFolders);
}
Interlocked.Increment(ref processedFolders);
lock (consoleLock)
{
ShowProgress(processedFolders, totalFolders);
}
} }
} }
catch (DirectoryNotFoundException ex) catch (DirectoryNotFoundException ex)
{ {
// 处理异常,例如输出错误信息并停止程序 // 处理异常,例如输出错误信息并停止程序
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
PauseBeforeExit(0); // 停止程序,并等待用户按任意键退出 PauseBeforeExit(count); // 停止程序,并等待用户按任意键退出
} }