12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.Diagnostics;
- if (args.Length != 2)
- {
- Console.WriteLine("Err: 2 args required, <inputDir> <outputDir>");
- return 1;
- }
- var inputDir = args[0];
- var outputDir = args[1];
- if (!Directory.Exists(inputDir))
- {
- Console.WriteLine("Err: inputDir dose not exist");
- return 1;
- }
- if (!Directory.Exists(outputDir))
- {
- Console.WriteLine("Err: outputDir dose not exist");
- return 1;
- }
- Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Idle;
- var fullInputDir = Path.GetFullPath(inputDir);
- var fullOutputDir = Path.GetFullPath(outputDir);
- var filePathsToProcess = Directory.GetFiles(fullInputDir, "*", SearchOption.AllDirectories);
- void ProcessFunc(string inputFilePath)
- {
- var outputFilePath = Path.ChangeExtension(Path.Combine(fullOutputDir, inputFilePath[(fullInputDir.Length + 1)..]), ".webp");
- if (File.Exists(outputFilePath))
- {
- lock (Console.Out) Console.WriteLine("SKIP EXIST: " + outputFilePath);
- return;
- }
- var outputFileDir = Path.GetDirectoryName(outputFilePath);
- if (Directory.Exists(outputFileDir) == false)
- {
- lock (Console.Out) Console.WriteLine("Create dir: " + outputFileDir);
- Directory.CreateDirectory(outputFileDir);
- }
- var pWebp = new Process
- {
- StartInfo =
- {
- FileName = "cwebp",
- ArgumentList =
- {
- inputFilePath, "-o", outputFilePath , "-quiet"
- },
- UseShellExecute = false,
- CreateNoWindow = false,
- }
- };
- pWebp.Start();
- pWebp.WaitForExit();
- lock (Console.Out) Console.WriteLine($"PROCESS {pWebp.ExitCode} {outputFilePath}");
- if (pWebp.ExitCode != 0)
- {
- int bp = 0;
- }
- }
- Parallel.ForEach(filePathsToProcess, ProcessFunc);
- // for debug
- //foreach (var s in filePathsToProcess)
- //{
- // ProcessFunc(s);
- //}
- return 0;
|