Как вы ждете, пока команда завершит выполнение в HTML Javascript? - PullRequest
0 голосов
/ 11 октября 2011

Я пишу HTML-меню (StartMenu.hta). Это меню запускается с DVD, но перед тем, как оно запустится, необходимо скопировать несколько файлов в папку пользователя TEMP. Эти файлы необходимо скопировать до открытия меню, поскольку эти файлы необходимы для использования меню.

Для копирования этих файлов я использую следующую функцию JavaScript:

function launch(){
    var shell = new ActiveXObject("WScript.Shell");
    shell.run("xcopy \Data\\VLC\ \%TEMP%\\CSE\\VLC\ /d/e/i/y");
    shell.run("xcopy \Data\\VIEWER\ \%TEMP%\\CSE\\VIEWER\ /d/e/i/y");
    shell.run("StartMenuPC.hta");
}

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

Я также пытался использовать циклы while и даже проверять, существуют ли файлы в новом месте, но я не очень разбираюсь в HTML. Я также не хочу использовать тайм-аут, потому что диск нужно будет скопировать файлы только один раз.

1 Ответ

1 голос
/ 11 октября 2011

shell.run принимает третий параметр, который определяет, должно ли действие быть выполнено перед движением вперед или нет.Таким образом, код должен быть чем-то вроде

var shell = new ActiveXObject("WScript.Shell");
shell.run("xcopy \Data\\VLC\ \%TEMP%\\CSE\\VLC\ /d/e/i/y", null, true);
shell.run("xcopy \Data\\VIEWER\ \%TEMP%\\CSE\\VIEWER\ /d/e/i/y", null, true);
shell.run("StartMenuPC.hta");

См. Метод запуска сценариев MSDN Windows для полного объяснения

...