serbanov Ответов: 1

Проблема C# - cmd, не устанавливает рабочий каталог


Когда я пытаюсь выполнить командную строку из cmd.exe процесс, он не работает.

Это мой код:
public static String _getIntegrityVersion()
{
    string _version = string.Empty;

    if (Directory.Exists("C:\\Program Files (x86)\\Integrity\\") == true)
    {
        DirectoryInfo _root = new DirectoryInfo("C:\\Program Files (x86)\\Integrity\\");
        DirectoryInfo[] dir = _root.GetDirectories();

        foreach (DirectoryInfo s in dir)
        {
            if (s.Name.Contains("IntegrityClient") == true)
            {
                _version = s.Name.Substring(15);
                break;
            }
        }
    }

    return _version;
}


public static string _searchVersionOfFile(FileInfo file)
{
    string _versionIntegrity = _getIntegrityVersion();

    Process cmd = new Process();
    cmd.StartInfo.WorkingDirectory = "C:\\Program Files (x86)\\Integrity\\" + "IntegrityClient" + _versionIntegrity + "\\bin\\";
    cmd.StartInfo.FileName = "cmd.exe";
    cmd.StartInfo.RedirectStandardInput = true;
    cmd.StartInfo.RedirectStandardOutput = true;
    cmd.StartInfo.CreateNoWindow = true;
    cmd.StartInfo.UseShellExecute = false;

    cmd.Start();

    string _versionOfFile = string.Empty;
    cmd.StandardInput.WriteLine("si rlog --fields=workingrev --sandbox=" + file.Directory.Name + "\\project.pj " + file.FullName);

    cmd.StandardInput.Flush();
    cmd.StandardInput.Close();

    string s = string.Empty;

    List<string> lines = new List<string>();

    while ((s = cmd.StandardOutput.ReadLine()) != null)
    {
        lines.Add(s);
    }
    lines.Reverse();

    for (int i = 0; i < lines.Count(); i++)
        if (lines[i].Contains("=========") == true)
        {
            _versionOfFile = lines[i + 1];
            break;
        }


    cmd.WaitForExit();
    return _versionOfFile;
}


Что я уже пробовал:

Все, что я основал в интернете, в google, на форумах разработчиков.
Ничего не помогало ... Мне нужно это запустить cmd.exe из указанного каталога (тот, что из рабочего каталога), и он не запускается оттуда... И я не хочу делать там cmd и запускать его каждый раз ... Это не то решение, которое мне нужно !

1 Ответов

Рейтинг:
2

Bernhard Hiller

Команда C# для установки каталога Curren:

Directory.SetCurrentDirectory(folder);

Предполагая, что вы правильно проанализировали проблему (есть некоторые сомнения), вызовите ее перед запуском процесса cmd.


serbanov

Ну, чтобы запустить команду "si rlog" (это команда IMS в cmd ) , мне нужно установить рабочий каталог в положение целостности... и это не установка .. моя команда не выполняется, и я не знаю почему.

serbanov

И я уже делал это раньше, чтобы запустить cmd. start (), и это не дало никакого результата ...