3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
1

Запустить и выполнить 2 команды в cmd

13.05.2019, 18:43. Показов 1324. Ответов 11
Метки cmd (Все метки)

Хочу перейти в католог с нужной мне программой и запустить ее, но программа может находится на разных дисках, а чтобы выполнить start надо перейти в ее диск командов cd "диск". Вопрос:
C#
1
arg = "cd /D " + @":\ " + "& start " + "\"" + path + "\"" + " " + "cmd.exe";
Почему он только переходит в диск, но не выполняет последующую команду?

UPD: передаю программе по пути path параметр cmd.exe

Добавлено через 7 минут
C#
1
2
3
4
5
6
7
8
            Process proc = Process.Start(new ProcessStartInfo
            {
                FileName = "cmd.exe",
                Arguments = "/k" + arg,
                UseShellExecute = false,
                CreateNoWindow = true,
                //RedirectStandardOutput = true
            });
стартую cmd так
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2019, 18:43
Ответы с готовыми решениями:

Каким образом можно в c# запустить cmd.exe и выполнить в ней некоторые команды?
Всем привет! Каким образом можно в c# запустить cmd.exe и выполнить в ней некоторые команды?

Java. Выполнить команды cmd (командной строки)
Здравствуйте! Очень кратко: ищу аналог С++ команды system("..."); в Java. Нужно перемещаться...

Запустить cmd.exe и выполнить через него команду
Здравствуйте, нужна помощь. Хочу сделать батник который запускал бы консоль при входе в windows и...

не возможно запустить команды через меню Выполнить
Здраствуйте! помогите с проблемой. ситация такая, не могу запустить через меню выполнить...

11
Администратор
Эксперт .NET
14660 / 11817 / 4771
Регистрация: 17.03.2014
Сообщений: 23,956
Записей в блоге: 1
14.05.2019, 09:42 2
FastMailSend, что мешает запустит напрямую без использования cmd?
C#
1
Process.Start(@"полный путь к программе");
Или так
C#
1
2
3
4
Process.Start(new ProcessStartInfo {
    FileName = "программа.exe",
    WorkingDirectory = @"папка_программы"
});
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
14.05.2019, 13:36  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
path = "D:\\Admin\\Documents\\Visual Studio 2017\\Projects\\C#\\TTS\\TTS\\bin\\Debug\\TTS_bs.exe"
arg = "D:\\Admin\\Documents\\Visual Studio 2017\\Projects\\C#\\TTS\\TTS\\bin\\Debug\\TTS.exe"
 
                Process proc = Process.Start(new ProcessStartInfo
                {
                    FileName = path,
                    Arguments = "\"" + arg + "\"",
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    //RedirectStandardOutput = true
                });
если запускать так, то выведет, что

"D:\Admin\Documents\Visual" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Системе не удается найти указанный путь.
хотя путь верный
0
управление сложностью
1686 / 1299 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2019, 13:40 4
Цитата Сообщение от FastMailSend Посмотреть сообщение
хотя путь верный
вы уверены ? строка пути обрезана до пробела, используйте собаку
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
14.05.2019, 13:41  [ТС] 5
Если в TTS_bs сделать так:
C#
1
args = new string[] { "cmd.exe" };
то работает, а если запускать через
C#
1
Process.Start
, то ошибка
0
управление сложностью
1686 / 1299 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2019, 14:00 6
в отладчике можете посмотреть на значения переменных
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
14.05.2019, 16:08  [ТС] 7
Цитата Сообщение от Почтальон Посмотреть сообщение
в отладчике можете посмотреть на значения переменных
Цитата Сообщение от FastMailSend Посмотреть сообщение
path = "D:\\Admin\\Documents\\Visual Studio 2017\\Projects\\C#\\TTS\\TTS\\bin\\Debug\\TTS_bs.exe"
arg = "D:\\Admin\\Documents\\Visual Studio 2017\\Projects\\C#\\TTS\\TTS\\bin\\Debug\\TTS.exe"
из отладчика скопировал
0
управление сложностью
1686 / 1299 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
14.05.2019, 16:27 8
Скопировано из справки msdn:
C#
1
2
3
4
5
6
7
8
9
10
11
12
using (Process myProcess = new Process())
                {
                    myProcess.StartInfo.UseShellExecute = false;
                    // You can start any process, HelloWorld is a do-nothing example.
                    myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
                    myProcess.StartInfo.CreateNoWindow = true;
                    myProcess.Start();
                    // This code assumes the process you are starting will terminate itself. 
                    // Given that is is started without a window so you cannot terminate it 
                    // on the desktop, it must terminate itself or you can do it programmatically
                    // from this application using the Kill method.
                }
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
14.05.2019, 21:16  [ТС] 9
понял, в Arguments почему-то передается строка без ковычек, поэтому при запуске с параметром он делит до пробела ("D:\Admin\Documents\Visual")
даже
то не помогло:
C#
1
arg = "\"\"" + arg + "\"\"";
Знает кто, как решить?
0
Администратор
Эксперт .NET
14660 / 11817 / 4771
Регистрация: 17.03.2014
Сообщений: 23,956
Записей в блоге: 1
15.05.2019, 00:11 10
FastMailSend, кавычки работают как надо и не теряются при использовании кода из сообщения #3. Тут что-то другое. Возможно к path что-то еще добавляется на самом деле или путь какой-то другой на самом деле.
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
15.05.2019, 18:06  [ТС] 11
у TTS_bs есть вывод полученного аргумента в консоль

Запустить и выполнить 2 команды в cmd

0 - результат(ошибка)
после двоеточия - полученный программой аргумент

Добавлено через 2 часа 57 минут
можно конечно прилепить костыль и вставить парсер в TTS_bs, чтоб передавать arg в [arg], а там разбирать в 1, но уж очень не хочется делать это.
неужели нет другого способа
0
Администратор
Эксперт .NET
14660 / 11817 / 4771
Регистрация: 17.03.2014
Сообщений: 23,956
Записей в блоге: 1
15.05.2019, 23:20 12
FastMailSend, верится с трудом. Я на практике проверил что все работает. Ищи ошибку в коде.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2019, 23:20
Помогаю со студенческими работами здесь

После команды start батник прекращает выполнение. Как запустить 2 команды start?
Я хочу одним кликом на батник запускать сразу и BrowserSync, и Sublime Text. Однако, запускается...

Не работают команды в cmd
Когда пишу в cmd какую-нибудь команду, например help то пишет вот это: "help" не является...

Команды Java в CMD
Здравствуйте, как мне "запихнуть" код Java в .bat файл? К примеру такой код: public static void...

cmd команды в pascal
как реализовать команды Sort, cd, Mkdir, RD в pascal?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru