Windows işlem önceliğini komut satırıyla değiştirme


Yanıtlar:


55

Komut satırı sözdizimi:

wmic process where name="AppName" CALL setpriority ProcessIDLevel

Örnek:

wmic process where name="calc.exe" CALL setpriority 32768

veya

wmic process where name="calc.exe" CALL setpriority "above normal"

Öncelik:

  • boşta: 64 (veya "boşta")
  • normalin altında: 16384 (veya "normalin altında")
  • normal: 32 (veya "normal")
  • normalin üstünde: 32768 (veya "normalin üstünde")
  • yüksek öncelikli: 128 (veya "yüksek öncelikli")
  • gerçek zamanlı: 256 (veya "gerçek zamanlı")

7
Ayrıca joker karakterleri de yapabilirsiniz wmic process where "CommandLine like '%calc%'" CALL setpriority "below normal"
laggingreflex

İşlem Gezgini'nde olduğu gibi Arka Plan (düşük G / Ç ve bellek önceliği) için de aynı şeyi yapmak mümkün mü?
miky

Bu toplu iş "cmd.exe" bile çalışacak mı? ... toplu iş bu cmd.exe başlayacak?
gamer0

Not: İlk tırnak kümesi zorunludur, bu nedenle diğer kabuklarda tırnaklar (veya çift tırnaklı) alınmalıdır. wmic process where 'name="calc.exe"' CALL setpriority "idle"
Cygwin'de

2
Neden normal değerin altında / üstünde bu kadar büyük ve garip? Ve neden normalde hem boş hem de gerçek zamanlı olarak daha az?
phuclv

11

Küçük bir ek.

Ayrıca, tamsayılar yerine (ezberlemesi kolay) dize değerlerini de kullanabilirsiniz:

 wmic process where name="calc.exe" CALL setpriority "idle"

Olası değerler: "rölanti", "düşük", "normalin altında", "normal", "normalin üzerinde", "yüksek öncelikli", "gerçek zamanlı"

PS. Özellikle bir dize değerinde birden çok kelime kullanıyorsanız, alıntıları unutmayın


Birden fazla kelime kullanmasanız bile ilk tırnak seti zorunludur. Kabuk tarafından yorumlanmak yerine komuta da geçirilmelidir.
piojo

Win10 Pro 1809'da "düşük" tanınmış bir değer değildir - bir hataya yol açar. "Boşta" kullanımı, işlemin görev yöneticisinde "düşük" önceliği olarak gösterilmesine neden olur ...
ljwobker

5

Toplu komut satırından sadece PowerShell kullanırdım. Bu örnek calc.exe dosyasını başlatır, sürecini bulur ve öncelik sınıfını "IDLE", aka LOW olarak ayarlar:

start /b /wait powershell.exe -command "calc.exe;$prog = Get-Process -Name calc;$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE"

Aşağıdaki numaralandırma değerlerinden birini belirtin: " Normal, Idle, High, RealTime, BelowNormal, AboveNormal"

İşte PowerShell'den bölünmüş çizgilerle aynı şey:

calc.exe
$prog = Get-Process -Name calc
$prog.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::IDLE

Daha önce söylenenleri tekrar etmenin anlamı ne?
harrymc

@harrymc PowerShell kullanarak orijinal soruyu yanıtlar.
paradroid

@harrymc - aslında DEC dediğim şeyi tekrar ediyorum. stackoverflow.com/questions/20693028/…
Knuckle-Dragger

Sorun değil. Sadece oldukça benzer bir şeye bağlandım.
harrymc

5

Mevcut cevaplara ek olarak , 'nice' Windows Eşdeğeri sorusu daha fazla çözümü listeliyor:

  1. Kullanılması komut BAŞLAT komut istemi (CMD) içinde.
  2. Ücretsiz ProcessTamer kullanarak, bu işlem başlatıldığında otomatik olarak uygulanan .exe kuralını ayarlamak için kullanın.
  3. Burada bulunan bir PowerShell betiğini kullanarak .
  4. Burada bulunan VBScript komut dosyasını kullanarak .

Ek olarak, eski SetPriority yardımcı programı hala çalışabilir, ancak bunu uzun zamandır denemedim.

Bu çözümlerden bazıları sistem hizmetleri üzerinde çalışmayabilir veya Yönetici olarak Çalıştırılması gerekebilir .


VbScript çözümü ile açık bir şekilde anlaşılır olması, START komutunun bunu yapmak için yalnızca 2 satır aldığı (bir tutamda, dolayısıyla bile çalıştığı durumda) görevini yerine getirmek için 23 satır kod almasıdır (yani öncelik seviyesini ayarlayın). Çıplak bir komut istemi): Başlat "" / realtime / b / w program.exe
Ed999

1

Windows 7 64-bit kullanıyorum.

Wmic komuttur değil güvenilir. Önemli tecrübelerime göre, çok fazla (çoğunlukla açıklanamayan) sebeplerden dolayı beklenmedik bir şekilde başarısız oluyor.

Mümkün olan en iyi komut, güvenilirliği nedeniyle, START komutudur. Sözdizimi çok basittir (bu bir toplu iş dosyası için 3 satırlı çalıştırma komutudur ):

::  Boost thread priority
SET command=<program.exe> <options>
start "" /REALTIME /B /W  %command%

Kanımca yüksek güvenilirlik derecesi , program farklı bir öncelikle çalışmaya başladıktan sonra önceliği karıştırmaya çalışmak yerine, .exe programının başlatıldığı öncelik seviyesini belirlemesinden kaynaklanmaktadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.