private string Get_ffmpegFile(string dir) { foreach (string file in DirectoryTools.GetAllFile(dir)) { if (StringTools.IsSame("ffmpeg.exe", Path.GetFileName(file), true)) { return(file); } } return(null); }
/// <summary> /// ワーカースレッドから呼ばれる。 /// </summary> public void Main() { Gnd.ConvLog.Writeln("本処理を開始しました。"); // 保留してたコピーを実行 { Gnd.ConvLog.Writeln("Files_PrepCopy.1"); for (int index = 0; index < Files_PrepCopy.Count; index += 2) { string rFile = Files_PrepCopy[index + 0]; string wFile = Files_PrepCopy[index + 1]; Gnd.ConvLog.Writeln("< " + rFile); Gnd.ConvLog.Writeln("> " + wFile); File.Copy(rFile, wFile); } Gnd.ConvLog.Writeln("Files_PrepCopy.2"); } ffmpegのテスト(); SameDir = Gnd.SameDir; if (SameDir) { ErrorFileCopy = false; NotProcessedFileCopy = false; OtherFileCopy = false; } else { ErrorFileCopy = Gnd.ErrorFileCopy; NotProcessedFileCopy = Gnd.NotProcessedCopy; OtherFileCopy = Gnd.OtherFileCopy; } Gnd.ConvLog.Writeln("SameDir: " + SameDir); Gnd.ConvLog.Writeln("ErrorFileCopy: " + ErrorFileCopy); Gnd.ConvLog.Writeln("NotProcessedFileCopy: " + NotProcessedFileCopy); Gnd.ConvLog.Writeln("OtherFileCopy: " + OtherFileCopy); Gnd.ConvLog.Writeln("audio_movie_extensions: " + string.Join(" ", AudioMovieExts.GetExts())); List <string> files = DirectoryTools.GetAllFile(RDir); TotalFileCount = files.Count; for (int index = 0; index < files.Count; index++) { GC.Collect(); //Gnd.BusyDlg.RequestGC = true; Gnd.BusyDlg.SetProgress((index + 1) * 1.0 / (files.Count + 1)); { string trailer = ""; Color statusColor = Color.Black; if (this.LastFailedFile != null) { trailer = "\n最後に失敗したファイル:" + this.LastFailedFile; } if (1 <= this.ErrorFileCount || 1 <= this.FailedCopyFileCount) { statusColor = Color.Red; } Gnd.BusyDlg.SetStatus( "総数:" + this.TotalFileCount + "\n成功:" + this.ProcessedFileCount + " , 失敗:" + this.ErrorFileCount + " , 処理不要:" + this.NotProcessedFileCount + " , その他:" + this.OtherFileCount + "\nコピー失敗:" + this.FailedCopyFileCount + trailer, statusColor ); } string file = files[index]; Gnd.ConvLog.Writeln("----"); Gnd.ConvLog.Writeln("[" + index + " / " + files.Count + "]"); Gnd.ConvLog.Writeln("対象ファイル: " + file); switch (ConvFile(file)) { case ConvFileRet_e.SUCCESSFUL: Gnd.ConvLog.Writeln("対象ファイルの処理に成功しました。"); ProcessedFileCount++; break; case ConvFileRet_e.ERROR: Gnd.ConvLog.Writeln("対象ファイルの処理に失敗しました。"); ErrorFileCount++; LastFailedFile = GetLocalFileUI(file); if (ErrorFileCopy) { CopyFileRDirToWDir(file, "ERROR"); } break; case ConvFileRet_e.NOT_PROCESSED: Gnd.ConvLog.Writeln("対象ファイルは既に音量均一化されています。(処理不要)"); NotProcessedFileCount++; if (NotProcessedFileCopy) { CopyFileRDirToWDir(file, "NO-PROC"); } break; case ConvFileRet_e.OTHER_FILE: Gnd.ConvLog.Writeln("対象ファイルは動画・音楽ファイルではありません。"); OtherFileCount++; if (OtherFileCopy) { CopyFileRDirToWDir(file, "OTHER"); } break; default: throw null; } } Gnd.ConvLog.Writeln("----"); Gnd.ConvLog.Writeln("本処理を終了しました。"); Gnd.ConvLog.Writeln("===="); Gnd.ConvLog.Writeln("ファイルの総数: " + TotalFileCount); Gnd.ConvLog.Writeln("処理に成功したファイル数: " + ProcessedFileCount); Gnd.ConvLog.Writeln("エラーになったファイル数: " + ErrorFileCount); Gnd.ConvLog.Writeln("既に音量均一化されていて処理しなかったファイル数: " + NotProcessedFileCount); Gnd.ConvLog.Writeln("その他のファイル数: " + OtherFileCount); Gnd.ConvLog.Writeln("コピーに失敗したファイル数: " + FailedCopyFileCount); }