ya158,
sov44
На усиленное тестирование не хватило времени и терпения...
Попробовал оба варианта и вот небольшое дополнение - нужно первой командой удалить SfxVarApiPath:
Код:
cmd /c cd /d %TEMP%&rd /s /q \"%SfxVarApiPath%\"&...
А то остаются SfxVarApiPath в %TEMP%.
Ну а так в принципе оба решения вполне рабочие...только проблема одна все-таки обнаружилась, пока глубоко не копал:
Если далее программу вызывать с waitall:, то получаю такое сообщение:
DiskDefrag_Std_RU.exe: ошибка
------------------------------------
Произошла ошибка при выполнении DiskDefrag.exe
Неверная функция.
==================================
Никакого отношения к загрузке системы не имеет, т.к. и в спокойном состоянии то же самое.
Обидно...так красиво все получилось, может, посмотрите, как с другими программами?
Я просто уже не успеваю, может, это и c DiskDefrag только.
Хотя...тут проблема общая, наверное, т.к. по waitall: запускается второй процесс, вот он и киллится.
Но у меня почему-то такого не происходит, я тоже боялся раньше, когда делал вариант с .cmd, но при проверке проблем не обнаружилось и я дальше не копал.
В файле анализ такой (zz_M%=%%M):
Код:
For /F "Tokens=1,2 Delims=," %%I In ('Tasklist /FO CSV /NH ') Do (If %%I=="%zz_M%" (Set PID=%%~J&&Set /a N+=1))
If %N% LEQ 1 goto NEXT - это нормальный выход, иначе TaskKill
Вроде по логике то же самое.