public override string[] ExtractTargets(string target) { List <string> results = new List <string>(); // get subdirectories and return the ones that aren't ignored if (Directory.Exists(target)) { DirectoryInfo dir = new DirectoryInfo(target); AddFoldersToBeIgnored(dir); dir.GetDirectories() .Select(d => d.FullName) .Each(t => { if (!IgnoreFolders.Contains(t)) { results.Add(t); } }); AddFilesToBeIgnored(dir); dir.GetFiles(Config.TargetFilePattern) .Select(f => f.FullName) .Each(t => { if (!IgnoreFiles.Contains(t)) { results.Add(new FileInfo(t).FullName); } }); } return(results.ToArray()); }
public override bool RunTask() { FilesThatExist = Files.Where(p => File.Exists(p.ItemSpec) && (!IgnoreFiles?.Contains(p, TaskItemComparer.DefaultComparer) ?? true)).ToArray(); Log.LogDebugTaskItems(" [Output] FilesThatExist", FilesThatExist); return(true); }
/// <summary> /// 文件部署 /// </summary> public override void CopyFile(object filePath) { string filePathStr = filePath.ToString(); if (File.Exists(filePathStr)) { System.Threading.Thread.Sleep(SleepSecond * 10);//休眠5000秒 try { string newFilePath = filePathStr.Replace(UpdatePath, AppPath); string[] fileArr = newFilePath.Split('\\'); string fileName = fileArr[fileArr.Length - 1]; if (IgnoreFiles.Contains(fileArr[fileArr.Length - 1])) { return; //如果是忽略文件,则忽略 } fileArr[fileArr.Length - 1] = ""; string newDic = string.Join("\\", fileArr); if (!Directory.Exists(newDic)) { Directory.CreateDirectory(newDic); } newFilePath = newDic + "\\" + fileName; if (File.Exists(newFilePath)) { /*备份到指定目录,并删除此文件*/ BackUpFile(newFilePath); File.Delete(newFilePath); } try { File.Move(filePathStr, newFilePath); } catch (Exception e) { throw new Exception(string.Format("source:{0},target:{1},{2}", filePathStr, newFilePath, e.Message)); } WriteMsg("移动成功:" + DateTime.Now.ToString("HH:mm:ss") + "(" + newFilePath + ")", ConsoleColor.Green); } catch (Exception e) { WriteMsg("移动失败:" + DateTime.Now.ToString("HH:mm:ss") + "(" + filePathStr + ")" + e.ToString(), ConsoleColor.Red); } finally { lock (Files) { DeleteEmptyDic(Path.GetDirectoryName(filePathStr)); //this.Files.Remove(filePathStr); } } } }
public override bool Execute() { Log.LogDebugMessage("GetFilesThatExist Task"); Log.LogDebugTaskItems(" Files", Files); Log.LogDebugTaskItems(" IgnoreFiles", IgnoreFiles); FilesThatExist = Files.Where(p => File.Exists(p.ItemSpec) && (!IgnoreFiles?.Contains(p, TaskItemComparer.DefaultComparer) ?? true)).ToArray(); Log.LogDebugTaskItems(" [Output] FilesThatExist", FilesThatExist); return(true); }
/// <summary> /// 拷贝文件 /// </summary> public override void CopyFile(object filePath) { string filePathStr = filePath.ToString(); if (File.Exists(filePathStr)) { System.Threading.Thread.Sleep(SleepSecond * 1000);//休眠5000秒 try { string newFilePath = filePathStr.Replace(UpdatePath, AppPath); string[] fileArr = newFilePath.Split('\\'); string fileName = fileArr[fileArr.Length - 1]; if (IgnoreFiles.Contains(fileArr[fileArr.Length - 1])) { return; //如果是忽略文件,则忽略 } fileArr[fileArr.Length - 1] = DateTime.Now.ToString("yyyy-MM-dd"); string newDic = string.Join("\\", fileArr); if (!Directory.Exists(newDic)) { Directory.CreateDirectory(newDic); } newFilePath = newDic + "\\" + fileName; string dirPath = Path.GetDirectoryName(filePathStr); if (File.Exists(newFilePath)) { File.Move(newFilePath, newFilePath + DateTime.Now.ToString("yyyy_mm_dd_HH_mm_ss") + Guid.NewGuid()); } File.Move(filePathStr, newFilePath); WriteMsg("移动成功:" + DateTime.Now.ToString("HH:mm:ss") + "(" + newFilePath + ")", ConsoleColor.Green); DirectoryInfo di = new DirectoryInfo(dirPath); if (di.GetDirectories().Length == 0 && di.GetFiles().Length == 0) { Directory.Delete(dirPath); } } catch (Exception e) { WriteMsg("移动失败:" + DateTime.Now.ToString("HH:mm:ss") + "(" + filePathStr + ")" + e.ToString(), ConsoleColor.Red); } finally { this.Files.Remove(filePathStr); } } }
public void RunSorter() { Files = GetFiles(); if (Files.Count == 0) { Console.WriteLine("Files not found"); return; } foreach (string file in Files) { string fileName = System.IO.Path.GetFileName(file); string fileExt = System.IO.Path.GetExtension(fileName); bool notFileAndExt = string.IsNullOrWhiteSpace(fileName) || string.IsNullOrWhiteSpace(fileExt); Console.WriteLine("notFileAndExt: {0}", notFileAndExt); if (notFileAndExt) { continue; } bool isIgnoreFile = IgnoreFiles != null && IgnoreFiles.Contains(fileName); Console.WriteLine("isIgnoreFile: {0}", isIgnoreFile); if (notFileAndExt) { continue; } if (notFileAndExt || isIgnoreFile) { continue; } Console.WriteLine("{0} - {1}", fileName, fileExt); string pathToMove = GetDirPathToMove(fileExt); string pathSource = System.IO.Path.Combine(pathToMove, fileName); pathSource = CheckSourcePath(pathSource); Console.WriteLine("{0} was moved to {1}.", file, pathSource); File.Move(file, pathSource); } }