Эквивалент Windows "хороший"

Есть ли в Windows эквивалент команды Unix, хорошо?

Я специально ищу что-то, что я могу использовать в командной строке, а не в меню "Установить приоритет" в диспетчере задач.

Мои попытки найти это в Google были сорваны теми, кто не может придумать лучшие прилагательные.

5 ответов

Решение

Если вы хотите установить приоритет при запуске процесса, вы можете использовать встроенную команду запуска:

START ["title"] [/ Dpath] [/ I] [/ MIN] [/ MAX] [/ SEPARATE | /ОБЩИЙ]
      [/LOW | / НОРМАЛЬНЫЙ | / ВЫСОКИЙ | / РЕАЛЬНОЕ ВРЕМЯ | /ABOVENORMAL | /НИЖЕ НОРМЫ]
      [/ WAIT] [/B] [команда / программа] [параметры]

Используйте параметры от нижнего до нормального, чтобы установить приоритет запускаемой команды / программы. Похоже, самое простое решение. Нет загрузки или написания сценария. Другие решения, вероятно, работают на уже запущенных процессах.

Если вы используете 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"

Возможно, вы захотите использовать ProcessTamer, который "автоматизирует" процесс понижения или обновления приоритета процесса на основе ваших настроек.

Я использую это в течение двух лет. Это очень просто, но действительно эффективно!

С 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";
}

PrcView, кажется, работает и из командной строки:

http://www.teamcti.com/pview/prcview.htm

(Проверьте параметр -ph)

Другие вопросы по тегам