Showing posts with label priority class. Show all posts
Showing posts with label priority class. Show all posts

Thursday, February 27, 2014

[VBScript] Boosting myself to HIGH process priority

The script gets its own name, then looks through the Win32_Processes for a match with CSCRIPT.EXE and a CommandLine containing that name. Any matches (should be only one, but could be more) are boosted to HIGH process priority.

This demonstrates WMI calls from both VBScript and JScript. Note the need to explicitly define an Enumerator in the JScript version.
Option Explicit

Dim sName
Dim sComputer
Dim oWMI
Dim cProcesses
Dim oProcess

Const HIGH = 256
sComputer = "."
Set oWMI = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
sName = WScript.ScriptName

Set cProcesses = oWMI.ExecQuery("Select * from Win32_Process Where Name = 'cscript.exe' And CommandLine LIKE '%" & sName & "%'")
For Each oProcess In cProcesses
  oProcess.SetPriority(HIGH) 
  WScript.Echo "Boosted myself"
Next
And in JScript
var HIGH = 256;
var sComputer = ".";
var sName = WScript.ScriptName;    

var query = GetObject("winmgmts:\\\\" + sComputer + "\\root\\cimv2")
    .ExecQuery("Select * from Win32_Process " + 
    "Where Name = 'cscript.exe' And CommandLine LIKE '%" + sName + "%'")

// Enumerate WMI objects
var cProcesses = new Enumerator(query);

for ( ; !cProcesses.atEnd(); cProcesses.moveNext()) { 
    var oProcess = cProcesses.item()
    oProcess.Priority = HIGH
    WScript.Echo( "Boosted myself")
}
© Copyright Bruce M. Axtens, 2014

Friday, June 29, 2012

[Batch] Running on Low

Running on LOW priority (or any other priority class) can be done from the command line with the START command, e.g.
START /LOW SomeBatch.cmd
Alternatively, one can embed the START command with the priority class modifier within the batch file itself, viz
@echo off
 setlocal enableextensions
 if %1@==@ (
  start /low %0 running
 goto :eof
 )
 echo This instance is running at LOW priority class
 pause
 exit
One could even make the priority class one of the parameters to the call, e.g.
@echo off
 setlocal enableextensions
 set PC=%1
 if %PC%@==@ (
 echo Please specify priority class as first argument.
 goto :eof
 ) 
 if %2@==@ (
 start /%PC% %0 %1 running
 goto :eof
 )
 echo Supposedly running %PC%
 pause
 exit
The trick is to check, in the first instance, for something in the %1 slot, and in the second, in the %2 slot, with the assumption that 'nothing' means %0 is running for the first time. Note also, that no checking of meaningful priority classes is done. That's left as an exercise for the reader.
© Copyright Bruce M. Axtens, 2012