Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/56: Рейтинг темы: голосов - 56, средняя оценка - 4.89
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125

Запуск cmd со списком аргументов

14.11.2015, 17:36. Показов 11401. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возник вопрос.
У меня есть батник, в нем около 50 строк кода.

Как я вижу, в startInfo.Arguments можно добавить одну строку с кодом из батника.
Как мне сюда засунуть код из 50 строк?

C#
1
2
3
4
5
6
7
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C copy /b Image1.jpg + Archive.rar Image2.jpg";
process.StartInfo = startInfo;
process.Start();
Заранее благодарю за помощь!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2015, 17:36
Ответы с готовыми решениями:

запуск cmd в c#
надо запустить 2 исполняемых файла не параллельно, а последовательно Process proc1 = new Process(); ...

Запуск процесса с передачей аргументов
Решил написать приложение по типу игрового лобби для игры Dota 2 игра с кряком от RevEmu игра запускается через revLoader который запускает...

Запуск cmd с аргументом
Как запустить cmd с таким аргументом c:\TOOLS\streams.exe -s -d "расположение программы" ? Пробовал Process.Start("cmd.exe",...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
14.11.2015, 19:53
XhonoRjke, 50 строк лучше вынести в bat файл и запускать его. Если же все таки хочется обойтись одной длинной строкой, то команды можно склеить с помощью & или &&.
C#
1
startInfo.Arguments = "/C dir & pause";
& выполняет слелдующую команду всегда, && если предыдущая команда отработала без ошибок (вернула 0)
0
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
14.11.2015, 20:12  [ТС]
Я не хочу, что бы у меня был bat и exe файл. Мне нужен лишь один exe файл.
Я не знаю, как их интегрировать в один exe файл.
Что бы внутри exe, запускался batник. Помоему это нельзя сделать)
0
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
14.11.2015, 21:43
поставьте знак @ перед кавычками, в которых будут аргументы (их просто ctrl-c + ctrl-v из батника)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
14.11.2015, 21:45
XhonoRjke, храни текст батника в программе, перед запуском создавай bat файл в каталоге для временных файлов и запускай ей. После завершения процесса удаляй bat файл.
1
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
15.11.2015, 00:17  [ТС]
Ты гений!

Добавлено через 2 часа 11 минут
Есть примеры использования твоего метода?
А то что-то не выходит у меня(
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
15.11.2015, 00:51
Лучший ответ Сообщение было отмечено XhonoRjke как решение

Решение

XhonoRjke,
C#
1
2
3
4
5
6
7
string batPath = Path.Combine(Path.GetTempPath(), "abc.bat");
string commands = @"dir
pause";
File.WriteAllText(batPath, commands, Encoding.Default);
Process cmd = Process.Start(batPath);
cmd.WaitForExit();
File.Delete(batPath);
0
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
15.11.2015, 00:59  [ТС]
Как ни странно, но мой код почему-то закрывает батник моментально, хотя создает файл myfile.txt

Почему?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process process = new System.Diagnostics.Process();
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
            startInfo.FileName = "cmd.exe";
            startInfo.Arguments = @"/C cls && echo XXX && echo YYY && PAUSE";
            //startInfo.Arguments = @"setlocal enabledelayedexpansion for /l %%i in (65, 1, 90) do ( cmd /c exit /b %%i 2>nul dir /b /a-d /s !=exitcodeascii!:/myfile*.* >>%UserProfile%/Desktop/myfile.txt ) endlocal & <nul set /p str=""%s% "" && find /c /v """" < "" %UserProfile%/Desktop/myfile.txt"" & Exit"; 
            process.StartInfo = startInfo;
            process.Start();
        }
    }
}
Оригинал код батника (это не весь батник, так что скину пока кусочек который пробую):
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
setlocal enabledelayedexpansion
    for /l %%i in (65, 1, 90) do (
      cmd /c exit /b %%i
 
2>nul dir /b /a-d /s !=exitcodeascii!:\myfile*.* >>%UserProfile%\Desktop\myfile.txt
 
)
endlocal
 
<nul set /p str="%s% "
find /c /v "" < "%UserProfile%\Desktop\myfile.txt"
 
Exit
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
15.11.2015, 06:30
XhonoRjke, есть подозрение что в случае перенаправления ввода/вывода записать все это в одну строку не получится. Работай через временный файл. Так надежнее.
1
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
15.11.2015, 14:32  [ТС]
Я так понимаю это работает так?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string batPath = Path.Combine(Path.GetTempPath(), "abc.bat");
string commands = @"setlocal enabledelayedexpansion
    for /l %%i in (65, 1, 90) do (
      cmd /c exit /b %%i
 
2>nul dir /b /a-d /s !=exitcodeascii!:\myfile*.* >>%UserProfile%\Desktop\myfile.txt
 
)
endlocal
 
<nul set /p str="%s% "
find /c /v "" < "%UserProfile%\Desktop\myfile.txt"
 
Exit";
File.WriteAllText(batPath, commands, Encoding.Default);
Process cmd = Process.Start(batPath);
cmd.WaitForExit();
File.Delete(batPath);
Но тут точно такой же аргумент, как и в случае обычного вызова... Всмысле тоже вставлять код.
Он даже компилировать не хочет(
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
15.11.2015, 19:33
XhonoRjke, кавычки внутри @-строк нужно удваивать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.11.2015, 19:33
Помогаю со студенческими работами здесь

Скрытый запуск cmd
При выполнении следующего кода мелькает консольное окно с информацией выполнения. Process proc = new Process(); ...

Запуск cmd от админа
Всем привет. Как запустить cmd от пользователя? Process proc1 = new Process(); proc1.StartInfo.FileName =...

Запуск программы через CMD
Здравствуйте, Простите возможно глупый вопрос, нигде не смог вычитать решения на него, у меня есть небольшое приложение на Windows Form C#...

Запуск консольных команд cmd.exe
Здравствуйте. Имеется несколько .bat файлов, которыми я иногда пользуюсь. Хочется запихнуть их в програмку с кнопочками, статусом и тд. ...

Запуск cmd.exe из службы Windows 7, 8
Доброго времени суток! Задача тривиальная: есть файл, который нужно контролировать. Если он меняется (содержимое, права доступа,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru