Можно ли заменить CMD чем-то другим? - PullRequest
3 голосов
/ 16 сентября 2010

Я никогда не изучал ОС, поэтому простите, если это звучит просто или глупо, но мне любопытно, можно ли заменить приглашение cmd в Windows.Я НЕ спрашиваю о программах, которые на самом деле делают это, поскольку я осмотрелся и не увидел ни одной.

Я спрашиваю: 1) возможно ли вообще написать совершенно новую программу, которая будет вести себянапример, cmd и 2) если затем можно заменить cmd на него, предполагая, что он может выполнять по крайней мере все задания, которые выполняет cmd.

Поскольку кажется, что даже программы, которые утверждают, что являются обновлением до него (cygwin,powershell и т. д.) фактически работают в том же маленьком черном окне.Может быть, я просто не совсем понимаю, как cmd вписывается в Windows в целом, или как что-то вроде bash на самом деле соединяется с Linux.

Кто-нибудь хочет направить меня в правильном направлении?

Ответы [ 4 ]

4 голосов
/ 16 сентября 2010

«Это то же самое маленькое черное окно» является функцией «консольной» подсистемы Windows. Приложения в консольном режиме получают это окно практически бесплатно и открывают его для них (либо самой Windows, либо библиотеками времени выполнения, я забыл, какие), когда они запускаются из Windows, а не из командной строки. (Программы в консольном режиме, запускаемые с существующей консоли, обычно заимствуют консоль родительского процесса.)

Тот факт, что консольные приложения выглядят одинаково, не обязательно означает, что все они запускаются из cmd.exe (хотя часто запускается их пакетный файл, их можно запускать самостоятельно), но все они используют та же подсистема и те же функции.

С учетом всего вышесказанного вполне можно написать замену cmd.exe. Это просто консольное приложение. Уловка делает его достаточно совместимым для запуска пакетных файлов (чтобы существующие приложения не ломались, когда они ожидают использовать cmd.exe), и при этом обладает достаточной гибкостью для добавления всего, что вы хотите добавить в оболочку.

2 голосов
/ 16 сентября 2010

Это может помочь вам использовать альтернативные командные оболочки, которые можно использовать в Windows :) CMD.EXE - это просто программа, предоставляющая интерфейс CLI. На самом деле есть хорошие альтернативы.

1 голос
/ 16 сентября 2010

вы можете написать приложение, которое позволит вам создавать и выполнять пакетные (.bat) файлы.

Например, допустим, вы используете C # в качестве языка.Вы можете открыть текстовый поток для создания (.bat) файлов.затем вы можете выполнить их так:

ProcessStartInfo CmdReplacement = new System.Diagnostics.ProcessStartInfo();

//choose a name and then arguments that you want to send to the command prompt
CmdReplacement.FileName = @"C:\testfile.bat";
CmdReplacement.Arguments = "1 2 3 4";

//if you use this property it will prevent a console window from popping up
pi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

//create new process and set starting information
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = CmdReplacement;


//set this to tell you when the process has completed
p.EnableRaisingEvents = true;

p.Start();

//wait until the process has completed
while(!p.HasExited)
{
System.Threading.Thread.Sleep(1000);
}

//check to see what the exit code was
if(p.ExitCode != 0)
{
//some error occurred
}
0 голосов
/ 16 сентября 2010

CMD.EXE - это просто программа. В этом нет ничего особенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...