hello all ,

i'm new to C# and i have a problem, i created a program that categorize my files into folders and subfolders.

and i want to run a script test.bat that will run a python script to the files with extension .gb in the subfolders and this script will create a txt file containing the result for all the .gb files in the subfolder where the script is found,

so i placed a copy of test.bat inside each folder and subfolder and i saved the path of each one in a list ,

and after this i tried to loop the list of paths and run the script .

but it's not running as wanted , because all the txt files are created in the first folder with wrong results , but when i go to the folders and run the test.bat manually it gives the wanted results , but in the program , it's not working

soo i need your help plz

that's my code

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace Abdallah_Project
{
    public class Program
    {
        static void Main(string[] args)
        {
            List<String> list = new List<String>();
           
            //File.WriteAllText("test.bat", "python ../skew.py -e"+"A" +"-e"+"C" +"-e"+"G" +"-e"+"T"+ "*.gb -o test.txt");
           // String[] allfiles = null;
            int startColumnIndex, finishColumnIndex;
            Console.WriteLine("Enter the index of start column:");
            startColumnIndex = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter the index of end column:");
            finishColumnIndex = int.Parse(Console.ReadLine());

            if (File.Exists("conf.txt") == false)
                throw new Exception("Configuration file not found");

            string[] confStr = File.ReadAllLines("conf.txt");

            for (int rowIndex = 0; rowIndex < confStr.Length; rowIndex++)
            {
                string[] cells = confStr[rowIndex].Split(' ');

                if (startColumnIndex < 0 || finishColumnIndex > cells.Length - 1)
                {
                    Console.Error.WriteLine(cells[0] + ", invalid column indexes");
                    continue;
                }

                string fileName = cells[0] + ".gb";

                if (File.Exists(fileName) == false)
                {
                    Console.Error.WriteLine(cells[0] + ", file not found");
                    continue;
                }

                string newPath = "";
 File.WriteAllText("test.bat", "python C:\\Python27\\mtdb1\\src\\skew.py -e\"A\" -e\"C\" -e\"G\" -e\"T\" *.gb -o " + cells[finishColumnIndex] + ".txt");

               
                for (int columnIndex = startColumnIndex; columnIndex <= finishColumnIndex; columnIndex++)
                {
                    if (Directory.Exists(cells[columnIndex]) == false)
                    {
                      Directory.CreateDirectory(newPath + cells[columnIndex] + "\\");
                        
                    }
                    newPath += cells[columnIndex] + "\\";
                   

                    if (File.Exists(newPath + "test.bat") == false)
                    {
                        File.Copy("test.bat", newPath + "test.bat");
                        list.Add(newPath + "test.bat");


                    }

                }
                File.Move(fileName, newPath + fileName);
                Console.WriteLine(fileName + " -moved-> " + newPath + fileName);

            }
                        int co = 0;
                     for (int i = 0; i < list.Count; i++) 
                     {
                        co++;

                     }


                     //Process pr = new Process();
                     
           
            for (int i = 0; i < list.Count; i++) // Loop through List with for
             {
                    Process pr = Process.Start(list[i]);
                    pr.WaitForExit();
                      
                              
                    Console.WriteLine("File test path is " + list[i]);
                    //Console.WriteLine("Process is still running");
         
            }
            Console.WriteLine("\n DONE ;) !!!");
            Console.Read();

        }



    }
}

i appreciate the help

Recommended Answers

All 2 Replies

Process pr = new Process();
pr.StartInfo.FileName = list[i];
pr.StartInfo.WorkingDirectory = Path.GetDirectoryName(list[i]);
pr.Start();
commented: solved my problem ;) +3

thank you very much , this helped me alot and solved my problem

but i added this line in order to let them run in a sequence and not together

thank you alot :D

pr.WaitForExit();
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.