Как реализовать запуск батника с зависящими от него батниками?

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
Сразу к сути
Есть у меня бат-файл для скачивания прямого эфира из Periscope.tv (Линк на сам батник на github)
У основного батника Start.cmd есть зависимые - download.cmd и другие

В чем собственно проблема..
При выполнении экшна "Запуск программы" = эти зависимые батники читаются
Но как только я запускаю батник через шарп (код ниже приложу) то пишет , что файл download.cmd отсутствует
68389


Код запуска:
string fileName = project.Directory + "\\Start.cmd"; // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = @""; // параметры запуска
bool windowStyle = false; // true - не показывать окно процесса, false - показывать окно процесса
bool getProcessId = true; // true - получить ID процесса, false - не получать ID процесса
bool waitForExit = false; // true - ждать завершения работы, false - не ждать завершения работы
int timeOut = 10000; // таймаут выполнения, в миллисек

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.StartInfo.Arguments = arguments;
if (windowStyle)
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
else
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
process.Start();
if (getProcessId)
    project.Variables["processId"].Value = process.Id.ToString(); // получаем ID процесса (создать переменную проекта processId)
if (waitForExit)
    process.WaitForExit(timeOut);

Так же ввожу параметры в этот батник через AutoIt

Код вставки параметров в батник:
var handle = AutoIt.AutoItX.WinGetHandle("Администратор:  Periscope video downloader v2.1.1");
AutoIt.AutoItX.WinActivate(handle);
AutoIt.AutoItX.ControlGetHandle(handle);
Thread.Sleep(1000);

AutoIt.AutoItX.Send(project.Variables["username_url"].Value, 0); // переменная с ссылкой
AutoIt.AutoItX.Send("{ENTER}", 0); // подтверждаем
Thread.Sleep(1000);

AutoIt.AutoItX.Send(project.Variables["convert_mp4_type"].Value, 0); // подтверждаем
AutoIt.AutoItX.Send("{ENTER}", 0); // подтверждаем
Thread.Sleep(1000);

AutoIt.AutoItX.Send("0", 0); // по умолчанию не ротируем
AutoIt.AutoItX.Send("{ENTER}", 0); // подтверждаем
Thread.Sleep(1000);
Подскажите как запустить батник, чтобы он воспринимал зависящие батники от него, чтобы я в итоге уже смог спокойно манипулировать с PID приложения и закрывать по надобности
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Укажите явно рабочую директорию, а так же все ваши пути. При этом, допустимо использовать и директорию проекта, но может влиять кириллица, пробелы (зависит от батника, его прог и т.д.).
Так же учитывайте, что UAC может влиять.
 

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
Укажите явно рабочую директорию, а так же все ваши пути. При этом, допустимо использовать и директорию проекта, но может влиять кириллица, пробелы (зависит от батника, его прог и т.д.).
Так же учитывайте, что UAC может влиять.
UAC отключен полностью
Поменял _bin на bin - результат не изменился
Вот опять же странность в том, что через экшн запуска программы делается всё как надо
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Вот опять же странность в том, что через экшн запуска программы делается всё как надо
Сделайте простой вывод echo %CD% и так же аргументов запуска.
UAC отключен полностью
На заметку, это возможно только через gpedit.msc
 

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
На заметку, это возможно только через gpedit.msc
UAC отрубил через групповую политику
Сделайте простой вывод echo %CD% и так же аргументов запуска.
А это как реализовать? Не совсем понимаю, ибо к сожалению с батниками не работал вообще, и даже с трудом понимаю как работают параметры запуска
 

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
Ага)
Запуск припомощи экшна
68392

Запуск при помощи кода
68393

Осталось строго указать путь как я понимаю
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
Теперь бы понять как её изменить , пробую через @"путь" = не очень успешно получается
 
  • Спасибо
Реакции: GrandArab

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
C#:
string path = @"C:\Windows\System32\cmd.exe";
System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.FileName = path;
p.Arguments = @"/c """"D:\ZennoPosterProjects\PSCPFindBroadcast\Start.cmd"" """;
var process = System.Diagnostics.Process.Start(p);

Я уже очень близок)
 

GrandArab

Client
Регистрация
26.01.2019
Сообщения
44
Благодарностей
9
Баллы
8
Спасибо, учитель!!!
C#:
var link = project.Variables["username_url"].Value;
var folder = project.Variables["Bat_file"].Value;
string path = "C:\\Windows\\System32\\cmd.exe";
System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
p.FileName = path;
p.Arguments = @"/K _bin\download.cmd  "+"\""+link+"\""+"  0";
p.WorkingDirectory = project.Directory;
var process = System.Diagnostics.Process.Start(p);
Прекрасно)

P.S. Аргументы и детали запуска можно смотреть через Process Explorer
 
Последнее редактирование:

Кто просматривает тему: (Всего: 2, Пользователи: 1, Гости: 1)