To run it:
ruby pid.rb <process-name>
ie: ruby pid.rb java: will list java.exe and javaw.exe processes
class ProcessInfo
attr_accessor :cmdLine, :pid
def self.parseWmic(cmd)
result = `#{cmd}`
raise("Error: " + result) unless $? == 0
processes = []
pinfo = nil
result.split(/\r?\n/).each do |line|
next if line =~ /^\s*$/
if line =~ /CommandLine=(.*)/i
pinfo = ProcessInfo.new
pinfo.cmdLine = $1
elsif line =~ /ProcessId=(\d+)/i
pinfo.pid = $1
processes << pinfo unless pinfo.pid.to_i == $$.to_i
end
end
return processes
end
def self.queryProcess(processName)
return self.parseWmic("wmic process where \"name like '" + processName +
"%'\" get ProcessID,Commandline /format:list")
end
def self.queryJavaProcess
return self.queryProcess('java')
end
def to_s
@pid.to_s + " " + @cmdLine
end
end
puts ProcessInfo.queryProcess(ARGV[0])