Как запускать командную строку cmd ?

  • Автор темы Автор темы squall1988
  • Дата начала Дата начала

squall1988

Client
Регистрация
02.04.2014
Сообщения
24
Реакции
1
Баллы
3
Здравствуйте как в zennо запустить cmd чтобы в командной строке можно было прописать значение из переменной, чтобы не создавать много батников?
 
сохраните данные прям в проекте в батник с нужным текстом и запустите его.
 
  • Спасибо
Реакции: squall1988

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    20 KB · Просмотры: 822
  • Спасибо
Реакции: ильяsffse и squall1988
сохраните данные прям в проекте в батник с нужным текстом и запустите его.
А как это сделать и мне это нужно,чтоб plink подключался и в командной строке дописывались логин/пароль/ адрес и текст их переменных
 
Я наверное не так вопрос сформулировал, у меня есть батник который из директории запускает командную строку и как у вас сходу получается сразу текст в батник сохранять, я просто в этом нубас)
 
В поле "Что записать", пишете свои данные или можно создать переменную с этими данными и прописывать ее; в поле "Путь к файлу" задаете название и расширение ставите .bat (всё как на скрине).
А как подключать Plink, в интернете все есть.
 
В поле "Что записать", пишете свои данные или можно создать переменную с этими данными и прописывать ее, в поле "Путь к файлу" задаете название и расширение ставите . bat (как на скрине)
А как подключать Plink, в интернете все есть.
У меня получается в ручном режиме все это делать и через готовые батники где прописаны уже настройки, или приходится их переставлять в путях
http://prntscr.com/727w7d
 
В поле "Путь к файлу" пропишите любой путь, какой нужно, в той директории батник и создастся.
 
В поле "Путь к файлу" пропишите любой путь, какой нужно, в той директории батник и создастся.
Они у меня уже созданные есть, я так понимаю это вы предлагаете аналог создания бата в ручную, а мне нужно,чтобы даттые дописывались в командной строке после запуска самостоятельно, в общем просто любые значения, а то я не знаю как это правильно делать
 
1. Экшен "Файлы" > "Взять текст", прописываете путь до своего батника, данные кладете в переменную, напр., {-Variable.Bat-}
2. Экшен "Файлы" > "Записать текст", в поле "Что писать" пишете {-Variable.Bat-} и дописываете нужные значения (так же можно из переменной). В поле"Путь к файлу" пишете тот же самый путь и название, что в п.1. Галочки в чекбоксах "Дописать файл" и "Записать перенос" НЕ ставите. При этом данные в вашем батнике перезапишутся.
Данные в файлах .bat должны быть в кодировке UTF-8.
 
  • Спасибо
Реакции: squall1988
1. Экшен "Файлы" > "Взять текст", прописываете путь до своего батника, данные кладете в переменную, напр., {-Variable.Bat-}
2. Экшен "Файлы" > "Записать текст", в поле "Что писать" пишете {-Variable.Bat-} и дописываете нужные значения (так же можно из переменной). В поле"Путь к файлу" пишете тот же самый путь и название, что в п.1. Галочки в чекбоксах "Дописать файл" и "Записать перенос" НЕ ставите. При этом данные в вашем батнике перезапишутся.
Данные в файлах .bat должны быть в кодировке UTF-8.
Большое спасибо за подробный ответ и уделенное время, ваш способ тоже помог и он рабочий, у меня просто был батник на открытие командной строки из папки с plink , и он не воспринимал команды записанные в параметрах запуска вообще,а если запускать cmd из sistem32 то он воспринимает команды если прописывать cmd /K или /С и дальнейший текст спасибо за помощь. Как дописывать в командной строке с папкой plink или любой другой папкой непонятно=)
 
Как дописывать в командной строке с папкой plink или любой другой папкой непонятно=)
Ну вот как на скрине, допустим, запуск Mozilla Firefox: start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Прописываете таким образом путь к своему .exe и дописываете параметры.
 
Ну вот как на скрине, допустим, запуск Mozilla Firefox: start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Прописываете таким образом путь к своему .exe и дописываете параметры.
Вот в том то и дело я прописываю E:\bat\opencmd.bat
Запускается командная строка и на экране прописан путь E:\bat> и дальше чтобы я не прописывал в параметрах запуска это не выводится на экран,а открывается так же пустым и надо прописывать все самому вручную http://prntscr.com/7296m8
сам бат файл содержит ток текст
@echo off
cmd.exe /K
 
вы сам батник заполните нужными данными. дополнительные параметры не в постере должны быть в этом случае. а все должно писаться внутри батника
 
как получить ответ из командной строки на введённую команду?
C#:
Развернуть Свернуть Копировать
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
p.StartInfo.FileName = @"ping"; // путь к батнику или exe
//p.StartInfo.Arguments = @"8.8.8.8"; // его параметры
p.Start();

string output = p.StandardOutput.ReadToEnd();
p.WaitForExit(); // ожидание завершения процесса

return output;
 
А кто-нибудь знает, как получить ответ из командной строки на введённую команду?
Можно попробовать использовать перенаправление вывода, например так:
запускать bat-ник с содержимым: команда >filename.txt
и потом парсить получившийся текстовик.

Но предыдущее решение от @Zymlex конечно же круче и проще в использовании. :-)
 
  • Спасибо
Реакции: Yuriy Zymlex
C#:
Развернуть Свернуть Копировать
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
p.StartInfo.FileName = @"ping"; // путь к батнику или exe
//p.StartInfo.Arguments = @"8.8.8.8"; // его параметры
p.Start();

string output = p.StandardOutput.ReadToEnd();
p.WaitForExit(); // ожидание завершения процесса

return output;
Так как мне нужно получить ответ из командной строки, то я указываю вот это:
Код:
Развернуть Свернуть Копировать
p.StartInfo.FileName = путь до cmd . exe;
с нужными параметрами. Но когда доходит до строки

Код:
Развернуть Свернуть Копировать
string output = p.StandardOutput.ReadToEnd();
зеннопостер зависает напрочь.
Можешь сказать, что тут не так?
 
  • Спасибо
Реакции: avtostopshik
если же туда надо и ещё что-то отправлять, то это уже надо извращаться (как некоторые).
Ну это точно извращение)) ок, он не может дождаться, когда процесс завершится, потому что тот не завершается. Есть ли другие способы, не из скрина, чтобы завершить-таки запущенный процесс?))
 
тот не завершается
Что вообще за процесс? Как его завершаете в обычном случае?
Есть ли другие способы, не из скрина, чтобы завершить-таки запущенный процесс?))
Не ждать завершения, получать и парсить ответ построчно, после получения нужной инфы - убивать процесс.
C#:
Развернуть Свернуть Копировать
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
p.StartInfo.FileName = @"ping"; // путь к exe или батнику
p.StartInfo.Arguments = @"8.8.8.8"; // его параметры
p.Start();

//p.StandardInput.WriteLine("ping 8.8.8.8 & exit"); // ввод команды
string output = "";
for(int i = 0; i < 30; i++){
    output += p.StandardOutput.ReadLine() + "\r\n";
    if(output.Contains("Статистика Ping")){ // Последняя строка получаемого текста
        try{p.Kill();} catch {} // убийство процесса с игнорированием ошибок, если процесс уже завершается
        return output;
    }
    Thread.Sleep(500);
}
throw new Exception("Не удалось.");
При наличии C# аналога, подобное - не нужный изврат.
 
Последнее редактирование:
Что вообще за процесс? Как его завершаете в обычном случае?

Не ждать завершения, получать и парсить ответ построчно, после получения нужной инфы - убивать процесс.
C#:
Развернуть Свернуть Копировать
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
p.StartInfo.FileName = @"cmd"; // путь к exe или батнику
//p.StartInfo.Arguments = @"8.8.8.8"; // его параметры
p.Start();

//p.StandardInput.WriteLine("ping 8.8.8.8 & exit"); // ввод команды
string output = "";
for(int i = 0; i < 30; i++){
    output += p.StandardOutput.ReadLine() + "\r\n";
    if(output.Contains("Статистика Ping")){ // Последняя строка получаемого текста
        try{p.Kill();} catch {} // убийство процесса с игнорированием ошибок, если процесс уже завершается
        return output;
    }
    Thread.Sleep(500);
}
throw new Exception("Не удалось.");
При наличии C# аналога, подобное - не нужный изврат.
Но даже с этим кодом зенка зависает. Неужели у тебя не так? В цикле доходит до пятого круга и останавливается на строке
Код:
Развернуть Свернуть Копировать
output += p.StandardOutput.ReadLine() + "\r\n";
 
Последнее редактирование:
Последнее редактирование:
Теперь рабочий, но это не имеет смысла без элементарного чтения комментариев и правки под вывод нужного exe...
Слушай, кажется получилось. Вот только не совсем. Смотри, у меня такой код:
Код:
Развернуть Свернуть Копировать
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
p.StartInfo.FileName = @"cmd . exe"; // путь к exe или батнику
p.StartInfo.Arguments = @"adb -s emulator-5554 shell getprop ro.build.version.release"; // его параметры
p.Start();
//p.StandardInput.WriteLine("ping 8.8.8.8 & exit"); // ввод команды
string output = "";
for(int i = 0; i < 30; i++){
    project.SendInfoToLog(i.ToString());
    output += p.StandardOutput.ReadLine() + "\r\n";
    return output;
    if(!output.Contains("")){ // Последняя строка получаемого текста
        try{p.Kill();} catch {} // убийство процесса с игнорированием ошибок, если процесс уже завершается
        return output;
    }
    Thread.Sleep(500);
}
throw new Exception("Не удалось.");
Сделал вывод результата в середине цикла, потому что в ответе всего одна строка и смысла в цикле нету. Но проблема не в этом, а в том, что ответ пришёл о том, какой версии моя винда. А должен быть ответ какой версии андроид на эмуляторе. Когда руками ввожу в командной строке данную команду, ответ правильный приходит. А тут почему то он как будто не к эмулятору обращался.
Почему так, ты знаешь?
 
adb -s emulator-5554 shell
facepalm.gif

Почему так, ты знаешь?
Можно было проще изначально, через https://github.com/quamotion/madb
Тут как минимум ошибка...
 
  • Спасибо
Реакции: avtostopshik
Тут как минимум ошибка...
Нет, не совсем. Дело в том, что без пробелов (сам знаешь где) отправить отправить сообщение этот форум не даёт)) пишет, что я заблокирован. Сам попробуй - поймёшь о чём я.
Можно было проще изначально, через https://github.com/quamotion/madb
Блиин, офигенно!! Спасибо!! Сейчас по изучаю данную библиотеку, надеюсь получиться заюзать))
 
Блиин, офигенно!! Спасибо!! Сейчас по изучаю данную библиотеку, надеюсь получиться заюзать))
Если бы вопрос был изначально по задаче, то и решения было бы адекватное, а не как скрепить 2 костыля и остаться не удивлённым...
 
  • Спасибо
Реакции: dohrelion
Если бы вопрос был изначально по задаче, то и решения было бы адекватное, а не как скрепить 2 костыля и остаться не удивлённым...
Да если бы знать заранее о том, что такое решение существует, то и вопросов бы заданных не возникло
 

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