78

Windows で Unix コマンドのniceに相当するものはありますか?

タスクマネージャーの「優先度の設定」メニューではなく、コマンドラインで使用できるものを特に探しています。

Google でこれを見つけようとする私の試みは、より良い形容詞を思いつくことができない人々によって妨げられてきました.

4

4 に答える 4

69

プロセスを起動するときに優先度を設定したい場合は、組み込みのSTARTコマンドを使用できます。

START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/B] [command/program] [parameters]

low から belownormal オプションを使用して、起動したコマンド/プログラムの優先度を設定します。最も簡単な解決策のようです。ダウンロードやスクリプトの作成はありません。ただし、他のソリューションはおそらく既に実行中のプロシージャで機能します。

于 2008-08-07T02:49:21.107 に答える
9

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"
于 2008-08-07T02:24:34.980 に答える
7

設定に基づいてプロセスの優先度をダウングレードまたはアップグレードするプロセスを「自動化」するProcessTamerの使用を検討したい場合があります。

私はそれを2年間使用しています。とてもシンプルですが、本当に効果的です!

于 2008-08-07T01:21:06.837 に答える
5

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";
}
于 2009-03-23T20:17:47.513 に答える