Program do automatycznego uruchamiania pliku exe z argumentami

0

Witam
Dopiero zaczynam moją naukę z C# a muszę do własnych celów napisać program, który przekonwertuje mi wszystkie pliki w danym katalogu przy użyciu programu exe, który się w tym katalogu również się znajduję.
Myślę, że powinno to wyglądać tak: Program convert.exe zostanie wywołany tyle razy ile plików znajduje się w folderze za każdym razem przyjmując inny argument; plik musi być uruchomiony tak "convert plik.dat plik.csv" gdzie plik .dat to plik do konwersji a .csv to plik po konwersji przy czym obie nazwy muszą być takie same.
Proszę o pomoc. Jest mi to niezbędne do pracy naukowej.

1

Czy ten program exe masz dany czy sam będziesz pisał? Jeżeli musisz skorzystać z zewn. programu to możesz go uruchomić za pomocą klasy Process:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
Jego najprostsza metoda wywołania:
http://msdn.microsoft.com/en-us/library/h6ak8zt5.aspx
Do znalezienia plików nada się klasa Directory:
http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
Na dole jest dobry przykład wykorzystania metody EnumerateFiles do wyciągania nazw plików:

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile; //<---- ścieżka do pliku
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
0

Program mam gotowy. Jednak problem mam z ilością plików do konwersji jest ich po kilkaset w każdym katalogu, który będę oddzielnie konwertował.

0

A nie możesz po prostu napisać prostego batcha? :-)

0

Witam,
tak jak kolega napisał najlepiej skorzystać z statycznej klasy Directory i metody GetFiles ktora jako parametr przyjmuje string z adresem katalogu, jeśli ma byc to bierzacy w którym znajduje się plik wykonywalny to jak porametr podajemy

Directory.GetCurrentDirectory()

. Metoda zwraca tablicę string z adresami plików. Co do parametrów to odczytujesz je z string[] args

 w metodzie Main. Można pobawić się jeszcze w storzenie kilku wątków co  mogło by przyśpieszyć pracę konvertera.
0

Źle zrozumiałem problem.
Zamiast kombinować z nowym programem, użyj istniejące polecenie **rename .dat .csv.

0

@bogdans, ale tu raczej nie chodzi o to, żeby zmienić rozszerzenie plików z dat na csv. Chodzi o to, żeby wywołać jakiś zewnętrzny program convert.exe na każdym z plików dat, aby otrzymać w konsekwencji tyle samo plików csv, które w jakiś magiczny sposób zostaną zmienione.

Chyba, że ja coś źle zrozumiałem ;-)

0

Masz rację, w nocy mam trudności z rozumieniem tego co czytam. To może tak: *for %z in (*.dat) do convert %z .csv.

1 użytkowników online, w tym zalogowanych: 0, gości: 1