none
Странное поведение команды start RRS feed

  • Вопрос

  • Здравствуйте, уважаемые!

    У одного из наших клиентов возникла задача по автоматизации запуска некоего приложения. Требовалось запускать несколько экземпляров одного и того же приложения, но для каждого экземпляра нужно было явно указывать на каких именно ядрах процессора ему работать.

    Для этого было написано несложное hta-приложение, которое и выполняло эту работу. Фактически это приложение создаёт cmd-файл с командой вида "start "" /affinity 0xF0 app.exe" и запускает его с помощью WshShell.Run().

    Однако по непонятной причине такая схема работает только для номера ядра <= 32. То есть допустим требуется запустить приложение на первых четырёх ядрах. Скрипт создаёт cmd-файл с командой "start " " /affinity 0xF app.exe" и запускает его. Приложение запускается и работает.

    Теперь нам требуется запустить приложение на ядрах с 33 по 36. Скрипт создаёт файл с командой "start " " /affinity 0xF00000000 app.exe" и запускает его. Команда start завершается с ошибкой "Указан недопустимый параметр команды START: 0xF00000000". Приложение естественно не запускается. НО! Если тут же запустить этот cmd вручную, то всё работает.

    Создаётся впечатление, что команда start, запущенная hta-скриптом видит только первые 32 ядра процессоров, а запущенная вручную - все. Как такое может быть?

    20 января 2015 г. 13:52

Ответы

  • Ваше hta-приложение запускается как 32-х битное или как 64-х битное?
    Скорее всего hta-приложение запускает 32-х битную версию CMD, а вручную Вы запускаете 64-х битную версию CMD.
    • Изменено PetSerAl 20 января 2015 г. 17:33
    • Помечено в качестве ответа Alan Mon 21 января 2015 г. 8:20
    20 января 2015 г. 17:14

Все ответы

  • Ваше hta-приложение запускается как 32-х битное или как 64-х битное?
    Скорее всего hta-приложение запускает 32-х битную версию CMD, а вручную Вы запускаете 64-х битную версию CMD.
    • Изменено PetSerAl 20 января 2015 г. 17:33
    • Помечено в качестве ответа Alan Mon 21 января 2015 г. 8:20
    20 января 2015 г. 17:14
  • Действительно. По умолчанию hta-файлы ассоциированы с C:\Windows\SysWOW64\mshta.exe и соответственно запускаются в 32-битной среде. После изменения на 64-битную версию mshta.exe всё заработало как надо.

    Спасибо.

    21 января 2015 г. 8:20