Я в некотором затруднении: когда я хочу запустить программу одновременно с другой программой, мой обычный MO - создать командный файл, который выглядит примерно так:

@ echo off
start exe1.exe
start exe2.exe
exit

Я компилирую пакетный файл, затем переименовываю исходную программу в exe1.exe а (скомпилированный) пакетный файл в имя исходной программы (чтобы ярлыки работали). К сожалению, теперь мне нужно запустить программу одновременно с cmd. Кажется, об изменении самого cmd не может быть и речи, и я не хочу зацикливаться на написании многопоточной программы для мониторинга запущенных в настоящее время процессов. У кого-нибудь есть советы? Я думал об использовании планировщика задач, но я не уверен, что с ним делать ... Спасибо! Я использую Win 7, и я действительно не хочу больше стороннего программного обеспечения здесь, чем мне нужно ....

Примечание. Это не может быть просто программа, запускающая cmd, а затем другая программа. КАЖДЫЙ ВРЕМЯ cmd открывается, эта программа тоже должна открываться. Даже переход в C:\Windows\System32 и запуск его вручную должен привести к запуску моей другой программы.

4 ответа4

1

Из справки CMD.EXE:

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

...
/D      Disable execution of AutoRun commands from registry (see below)
...

If /D was NOT specified on the command line, then when CMD.EXE starts, it
looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if
either or both are present, they are executed first.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

        and/or

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

Таким образом, вы должны иметь возможность создать запись реестра с помощью команды для запуска вашей программы.

0

Пожалуйста, попробуйте использовать Task Scheduler для достижения этой цели. Шаги приведены ниже.

Откройте Планировщик заданий> вкладка "Действия"> "Создать задачу"> "Имя задачи"> вкладка "Перейти к триггерам"> нажмите "Создать"> выберите "В случае события" в раскрывающемся списке "Журнал"> введите источник и идентификатор события cmd при его открытии> Перейти к действию Вкладка> Введите путь к другой программе, которую вы хотите запустить.

Надеюсь это поможет.

0

Да, подделка %windir%\system32\cmd.exe опасна.  Вы чувствуете себя комфортно с изменением ярлыков, которые вы используете для запуска cmd?

Если вы cmd /? , вы получите сообщение об использовании, которое включает в себя:

CMD [other options …] [[/S] [/C | /K] string]

/C      Carries out the command specified by string and then terminates
/K      Carries out the command specified by string but remains
/S      Modifies the treatment of string after /C or /K (see below)

(и далее говорится о том, как /S изменяет интерпретацию кавычек в командной строке).

Так что, если вы создаете ярлык, чье поле Target говорит что-то вроде

%windir%\system32\cmd.exe /k "%ProgramFiles%\Windows NT\Accessories\wordpad.exe"

затем каждый раз, когда вы вызываете этот ярлык, он запускает командную строку, а cmd запускает процесс WordPad (а затем выдает приглашение и читает команды из терминала, как обычно).  Как и в вашем вопросе, вам может потребоваться включить start в командной строке после cmd.exe /k .

0

Я не могу понять вопрос, но я просто написал это как стандартный командный файл (не скомпилированный), и это сработало

@ echo off start exe1.exe start cmd exit

Который открыл новое окно cmd одновременно с моим тестовым приложением. (Я использовал что-то другое, чем exe1.exe).

Оболочка cmd может открыть новую оболочку cmd.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .