Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   start cmd (http://forum.oszone.net/showthread.php?t=329768)

4EJLO6PEK 13-09-2017 16:45 2764495

start cmd
 
всем доброго времени суток.
может быть кто-то подскажет.

есть несколько машин, на которых каждые 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 2764496

Цитата:

Цитата 4EJLO6PEK
запуск другого bat файла, который не будет дочерним »

Ответ по существу: нельзя.

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


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

4EJLO6PEK 13-09-2017 17:09 2764499

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

Iska 13-09-2017 17:29 2764504

Цитата:

Цитата 4EJLO6PEK
ведь в виндовс может быть открыто несколько окон 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 2764616

Iska, спасибо....второй вариант для моей задачи много удобнее....autorun.bat запустит батник, первой строчкой в которой будет убить autorun.bat и все

Iska 14-09-2017 13:13 2764632

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

4EJLO6PEK 14-09-2017 17:20 2764682

Iska, ну или exit нужен в конце иначе остается консоль....или taskkill

Iska 14-09-2017 17:38 2764685

Не нужен, если используете тот самый start.


Время: 22:53.

Время: 22:53.
© OSzone.net 2001-