private static List <string> GetFileList(NStarController nstarController)
        {
            List <string> files = new List <string>();

            while (true)
            {
                bool done = false;
                for (int i = 7; i <= 40; i++)
                {
                    var file = nstarController.GetString(i, 11, 63).Trim();
                    if
                    (file == "******************** End of Data Set list *********************")
                    {
                        done = true;
                        break;
                    }

                    files.Add(file);
                }

                if (done)
                {
                    break;
                }

                nstarController.bzhao.SendKey("<PF8>");
                nstarController.bzhao.WaitReady(10, 1);
            }

            return(files);
        }
        private static List <CopyCommand> GetCopyCommands(NStarController nstarController, string fileName, string latestVersion)
        {
            List <CopyCommand> copyCommands = new List <CopyCommand>();

            while (true)
            {
                bool done = false;
                for (int i = 7; i <= 40; i++)
                {
                    var file = nstarController.GetString(i, 11, 63).Trim();
                    if
                    (file == "******************** End of Data Set list *********************")
                    {
                        done = true;
                        break;
                    }

                    if (!Regex.IsMatch(file, fileName.Replace(".", "\\.") + "\\.G[0-9]{4}V[0-9]{2}"))
                    {
                        continue;
                    }

                    if (string.Compare(file, fileName + "." + latestVersion) <= 0)
                    {
                        continue;
                    }

                    var copyCommand = new CopyCommand();
                    copyCommand.fromfile = file;
                    copyCommands.Add(copyCommand);

                    nstarController.bzhao.SetCursor(i, 2);
                    nstarController.bzhao.SendKey("i");
                    nstarController.bzhao.SendKey("<Enter>");
                    nstarController.bzhao.WaitReady(10, 1);
                    copyCommand.tofile = fileName + ".DT" + nstarController.GetString(17, 66, 8).Replace("/", "");
                    nstarController.bzhao.SendKey("<PF3>");
                    nstarController.bzhao.WaitReady(10, 1);
                }

                if (done)
                {
                    break;
                }

                nstarController.bzhao.SendKey("<PF8>");
                nstarController.bzhao.WaitReady(10, 1);
            }

            return(copyCommands);
        }
        static void Main(string[] args)
        {
            var    textLines     = File.ReadAllLines(@"C:\Users\mheim\Documents\List of the Input Files Saved with Date.txt");
            string nstarUsername = "******";

            Console.WriteLine("Enter password: "******"<PF2>");
            nstarController.bzhao.WaitReady(10, 2);

            nstarController.bzhao.SendKey("<Enter>");
            nstarController.bzhao.WaitReady(10, 1);

            nstarController.bzhao.SendKey("<Enter>");
            nstarController.bzhao.WaitReady(10, 2);

            nstarController.bzhao.SendKey("p.3.4");
            nstarController.bzhao.SendKey("<Enter>");
            nstarController.bzhao.WaitReady(10, 1);


            List <CopyCommand> needsUpdating = new List <CopyCommand>();

            foreach (var textLine in textLines)
            {
                if (nstarController.GetString(3, 30, 21) != "Data Set List Utility")
                {
                    throw new NotImplementedException();
                }

                var fileName      = textLine.Split('\t')[0].Trim();
                var latestVersion = textLine.Split('\t')[1].Trim();
                nstarController.bzhao.SetCursor(9, 24);
                nstarController.bzhao.SendKey("<EraseEof>");
                nstarController.bzhao.SendKey(fileName);

                nstarController.bzhao.SetCursor(14, 34);
                nstarController.bzhao.SendKey("/");

                nstarController.bzhao.SetCursor(15, 34);
                nstarController.bzhao.SendKey("/");

                nstarController.bzhao.SetCursor(16, 34);
                nstarController.bzhao.SendKey("/");

                nstarController.bzhao.SetCursor(17, 34);
                nstarController.bzhao.SendKey("/");

                nstarController.bzhao.SetCursor(18, 34);
                nstarController.bzhao.SendKey(" ");

                nstarController.bzhao.SetCursor(19, 34);
                nstarController.bzhao.SendKey(" ");


                nstarController.bzhao.SendKey("<Enter>");
                nstarController.bzhao.WaitReady(10, 1);


                if (nstarController.GetString(3, 11, 18) != "Data Sets Matching")
                {
                    throw new NotImplementedException();
                }
                var files = GetCopyCommands(nstarController, fileName, latestVersion);
                needsUpdating.AddRange(files);


                nstarController.bzhao.SendKey("<PF3>");
                nstarController.bzhao.WaitReady(10, 1);
            }

            nstarController.bzhao.SendKey("<PF3>");
            nstarController.bzhao.WaitReady(10, 1);
            nstarController.bzhao.SendKey("3.3");
            nstarController.bzhao.SendKey("<Enter>");
            nstarController.bzhao.WaitReady(10, 1);


            foreach (var copyCommand in needsUpdating)
            {
                for (int i = 0; i < 10; i++)
                {
                    if (nstarController.GetString(3, 32, 17) == "Move/Copy Utility")
                    {
                        break;
                    }
                    System.Threading.Thread.Sleep(1000);
                }


                if (nstarController.GetString(3, 32, 17) != "Move/Copy Utility")
                {
                    throw new NotImplementedException();
                }

                nstarController.bzhao.SetCursor(18, 25);
                nstarController.bzhao.SendKey("<EraseEof>");
                nstarController.bzhao.SendKey("'" + copyCommand.fromfile + "'");
                nstarController.bzhao.SetCursor(41, 14);
                nstarController.bzhao.SendKey("c");
                nstarController.bzhao.SendKey("<Enter>");
                nstarController.bzhao.WaitReady(10, 1);

                nstarController.bzhao.SendKey("<EraseEof>");
                nstarController.bzhao.SendKey("'" + copyCommand.tofile + "'");
                nstarController.bzhao.SendKey("<Enter>");
                nstarController.bzhao.WaitReady(10, 1);

                nstarController.bzhao.SendKey("1");
                nstarController.bzhao.SendKey("<Enter>");
                nstarController.bzhao.WaitReady(10, 1);
            }


            File.WriteAllLines(@"C:\Users\mheim\Documents\LIF_UPDATED.txt", needsUpdating.Select(x => x.fromfile + " to " + x.tofile));



            nstarController.Close();
        }