示例#1
0
        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());
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }
示例#5
0
        /// <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);
                }
            }
        }
示例#6
0
        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);
            }
        }