/// <summary> /// get directory size info form du.exe/du64.exe /// we will use size not size on disk to keep same with /// C# DirectoryInfo report /// du.exe output example: /// Files: 130552 /// Directories: 45942 /// Size: 16,113,239,255 bytes /// Size on disk: 14,142,668,800 bytes /// </summary> /// <param name="directoryCache"></param> /// <returns></returns> internal static DirectoryCache LoadDirectoryInfoByCmd(DirectoryCache directoryCache) { var output = CmdHelper.ExecDiskUsage(directoryCache.Uri); // check if du.exe return "", means a junction if (output == "") { return(directoryCache); } // make windows "\r\n" to "\n" only output = output.Replace("\r", ""); var sizeStr = output.Split("\n")[2].Trim(); sizeStr = sizeStr.Replace("Size: ", "").Replace("bytes", ""); if (ulong.TryParse(sizeStr, out var size)) { directoryCache.Length = size; } return(directoryCache); }