Войти

Показать полную графическую версию : start cmd


4EJLO6PEK
13-09-2017, 16:45
всем доброго времени суток.
может быть кто-то подскажет.

есть несколько машин, на которых каждые 5 мин запускается скрипт, он выполняет много разных действий, в том числе при появлении в папке autorun.bat файла, он его запускает командой start /min %RUN%AutoRun.bat , ждет 15 секунд и продолжает свою работу....в конце он закрывает себя и все свои дочернии процессы командой taskkill /T /F /IM cmd.exe /FI "WINDOWTITLE EQ Администратор: proga*"
и этот скрипт править не разрешают

проблема родилась, когда autorun.bat должен выполняться дольше....получается он запускается, выполняется, а потом taskkill его рубит, возник вопрос, можно ли как-то записать в AutoRun.bat, запуск другого bat файла, который не будет дочерним, а создаст отдельный процесс, и продолжит свою работу после taskkill.

Iska
13-09-2017, 17:00
запуск другого bat файла, который не будет дочерним »
Ответ по существу: нельзя.

Ответ по уму: пакетные файлы не могут быть или не быть «дочерними», таковым свойством могут обладать по отношению друг к другу только процессы. В данном случае речь может идти только о процессах cmd.exe.


Так или иначе, start тут не поможет. Вы можете создать назначенное задание, которое будет вызывать на исполнение пакетный файл, сразу же вызвать задание на немедленное исполнение, затем удалить это задание.

4EJLO6PEK
13-09-2017, 17:09
да, про планировщик уже думал, но может есть более элегантное решение....
ведь в виндовс может быть открыто несколько окон cmd и если из одного открывать новые cmd, то они по taskkill /T закроются как дочерние, а отдельно открытое окно, спокойно продолжит свою работу

Iska
13-09-2017, 17:29
ведь в виндовс может быть открыто несколько окон cmd и если из одного открывать новые cmd, то они по taskkill /T закроются как дочерние, а отдельно открытое окно, спокойно продолжит свою работу »
Ну, есть ещё вариант: cmd.exe (1) → cmd.exe (2) → cmd.exe (3), затем cmd.exe (2) завершает свою работу. В итоге cmd.exe (3) уже не будет являться опосредованно дочерним по отношению к cmd.exe (1). Тут start может пригодиться. Но не думаю, что это будет удобнее.

4EJLO6PEK
14-09-2017, 11:39
Iska, спасибо....второй вариант для моей задачи много удобнее....autorun.bat запустит батник, первой строчкой в которой будет убить autorun.bat и все

Iska
14-09-2017, 13:13
4EJLO6PEK, «убивать» ничего не надо. достаточно будет того, что промежуточный итерпретатор команд запустит дочерний процесс и просто завершит свою работу. Сам.

4EJLO6PEK
14-09-2017, 17:20
Iska, ну или exit нужен в конце иначе остается консоль....или taskkill

Iska
14-09-2017, 17:38
Не нужен, если используете тот самый start.




© OSzone.net 2001-2012