Очень полезный скрипт, спасибо. Но мне так и не удалось реализовать мою задачу. Мне всего-навсего нужно было выполнить , например получить сообщение на экран командой винды msg /SERVER:WIN-6A3MK3B9UJJ * "Парсинг закончился". Если я допустим запускаю вручную кусок кода, то я получаю сообщение на экран и вывод логов. А если я запускаю в составе потоков, лог последний получаю правильно, а сообщение не получаю.
Вот скрипт с частью кода запуска "Запустить процесс", без него не выполнялся внешний процесс.
// Увеличиваем счетчик потоков
PSet("basglobal", "THREADS", parseInt(JSON.parse(P("basglobal", "THREADS") || "0")) + parseInt(1))
_finnaly(function(){
// Уменьшаем счетчик потоков
var t = parseInt(JSON.parse(P("basglobal", "THREADS") || "0")) - parseInt(1);
PSet("basglobal", "THREADS", t);
// Если это последний поток
if (t == 0) {
// 1. Уведомление в BAS
log("Парсинг закончился");
log("LAST THREAD");
// 2. Системное уведомление Windows
// Создаем временный BAT файл
var batFile = "temp_msg_" + Date.now() + ".bat";
var command = 'msg /SERVER:WIN-6A3MK3B9UJJ * "Парсинг закончился"';
// Записываем BAT файл
native("filesystem", "writefile", JSON.stringify({
path: batFile,
value: "@echo off\r\nchcp 65001 > nul\r\n" + command,
base64: false,
append: false
}));
// Запускаем процесс
native_async("processmanager", "start", JSON.stringify({
location: batFile,
working_folder: "",
waitfinish: true,
arguments: "",
version: 2
}))!;
// Очищаем временный файл
sleep(500)!;
native("filesystem", "removefile", batFile);
}
})