tkunohim Ответов: 2

Команда Dsget в файле bat не может быть выполнена с помощью приложения C# windows


У меня есть bat-файл, содержащий несколько команд группы dsget для извлечения членов в txt-файлы. И я хотел бы выполнить файл bat из C# windows form. Но результаты я получил:
'dsget' is not recognized as an internal or external command,
operable program or batch file.

Ниже приведен код:

var procinfo = new ProcessStartInfo()
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
FileName= "batFile",
WorkingDirectory = @"C:\\batDir",
};

proc = Process.Start(procinfo);
proc.WaitForExit();
string output = proc.StandardOutput.ReadToEnd();
string error = proc.StandardError.ReadToEnd();
proc.Close();


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

Пытался измениться
UseShellExecute = true
но получили те же результаты.

Richard Deeming

Установлен ли dsget?

Находится ли dsget в каталоге, который является частью переменной среды PATH?

Работает ли ваша программа с повышенными правами / от имени администратора?

2 Ответов

Рейтинг:
17

OriginalGriff

Сообщение означает, что система не может найти dsget.exe в текущем каталоге или в папке, которая находится в переменной среды PATH по умолчанию. Начните с запуска командной строки (WIN+R, "cmd", ENTER) и измените каталог на папку пакетного файла:

C:[ENTER]
CD \batdir[ENTER]
dir dsget.*[ENTER]
И посмотрим, что он найдет. На первый взгляд-ничего.
Они стараются
PATH[ENTER]
И посмотрите, какие папки просматривает Windows.
Самый простой способ обойти эту проблему-взять полный путь к вашему exe-файлу и использовать его в вашем пакетном файле вместо просто "dsget": "C:\MyApps\TheyLiveInHere\dsget.exe"


Рейтинг:
1

Richard MacCutchan

Вы проверили это: Dsget | Microsoft Docs[^] ?