У меня есть четыре файла bat и четырехъядерный компьютер. Можно ли назначить каждый запуск каждому ядру, т.е. 1 задание на 1 ядро. Есть ли способ контролировать это с помощью команд?
В Windows 7 и выше вы можете использовать START /AFFINITY
чтобы запустить процесс и ограничить его одним или несколькими конкретными процессорами.
Для более ранних версий Windows (XP и выше) вы можете загрузить бесплатная утилита Microsoft PsExec v2.0 это не только позволяет назначать процесс конкретным процессорам, но и запускать процесс на удаленном компьютере.
В своем комментарии к ответу Chopper3 вы говорите, что у вас есть очередь из многих заданий, и вы хотите запустить одно задание для каждого процессора, а затем оставить оставшиеся задания подождать, пока процессор не освободится. В Параллельное выполнение процессов оболочки в StackOverflow я разместил образец командного файла, который делает почти то, что вы хотите. Как написано, он устанавливает очередь заданий, а затем ограничивает количество параллельных процессов. Предполагается, что ОС будет выполнять балансировку нагрузки между доступными процессорами. Более того, сценарий разработан для поддержки PsExec, поэтому вы должны иметь возможность назначать каждый процесс удаленному компьютеру и / или конкретному процессору (ам). Однако я не тестировал функциональность PsExec.
Если вы используете start /b whatever.bat
он запустит пакетный файл в фоновом режиме, если вы сделаете это сразу, тогда ядро будет планировать задания соответствующим образом - вы не можете и не хотите назначать ядро для каждого пакетного файла - вы просто хотите, чтобы они работали асинхронно а ОС - для управления рабочей нагрузкой.