Есть ли в Windows эквивалент команды Unix, хорошо ?
Я специально ищу что-то, что я могу использовать в командной строке, а не в меню «Установить приоритет» в диспетчере задач.
Мои попытки найти это в Google были сорваны теми, кто не может придумать лучшие прилагательные.
Если вы хотите установить приоритет при запуске процесса, вы можете использовать встроенную команду START :
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program] [parameters]
Используйте параметры от нижнего до нормального, чтобы установить приоритет запускаемой команды / программы. Похоже, самое простое решение. Нет загрузки или написания сценария. Другие решения, вероятно, работают на уже запущенных процессорах.
Возможно, вы захотите использовать ProcessTamer, который «автоматизирует» процесс понижения или обновления приоритета процесса на основе ваших настроек.
Я использую это в течение двух лет. Это очень просто, но действительно эффективно!
Если вы используете PowerShell , вы можете написать скрипт, который позволит вам изменить приоритет процесса. В блоге Monad я обнаружил следующую функцию PowerShell :
function set-ProcessPriority {
param($processName = $(throw "Enter process name"), $priority = "Normal")
get-process -processname $processname | foreach { $_.PriorityClass = $priority }
write-host "`"$($processName)`"'s priority is set to `"$($priority)`""
}
В командной строке PowerShell вы должны выполнить следующую строку:
set-ProcessPriority SomeProcessName "High"
с http://techtasks.com/code/viewbookcode/567
# This code sets the priority of a process
# ---------------------------------------------------------------
# Adapted from VBScript code contained in the book:
# "Windows Server Cookbook" by Robbie Allen
# ISBN: 0-596-00633-0
# ---------------------------------------------------------------
use Win32::OLE;
$Win32::OLE::Warn = 3;
use constant NORMAL => 32;
use constant IDLE => 64;
use constant HIGH_PRIORITY => 128;
use constant REALTIME => 256;
use constant BELOW_NORMAL => 16384;
use constant ABOVE_NORMAL => 32768;
# ------ SCRIPT CONFIGURATION ------
$strComputer = '.';
$intPID = 2880; # set this to the PID of the target process
$intPriority = ABOVE_NORMAL; # Set this to one of the constants above
# ------ END CONFIGURATION ---------
print "Process PID: $intPID\n";
$objWMIProcess = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\cimv2:Win32_Process.Handle=\'' . $intPID . '\'');
print 'Process name: ' . $objWMIProcess->Name, "\n";
$intRC = $objWMIProcess->SetPriority($intPriority);
if ($intRC == 0) {
print "Successfully set priority.\n";
}
else {
print 'Could not set priority. Error code: ' . $intRC, "\n";
}
start
вести себя еще более , какnice
, использовать/WAIT
и/B
возможности сделать вывод на терминал идти в том же окне.start /low "C:\Program Files\myprog.exe" param1 param2
вы получите сообщение об ошибке «Windows не может найти« param1 »». Решение состоит в том, чтобы заменить «C: \ Program Files \ ...» на c: \ progra ~ 1 \ .. без кавычек (имя каталога DOS).