Разобрать список задач - PullRequest
0 голосов
/ 29 июня 2010

Файл содержит следующее:

HPWAMain.exe                  3876 Console                    1      8,112 K

hpqwmiex.exe                  3900 Services                   0      6,256 K

WmiPrvSE.exe                  3924 Services                   0      8,576 K

jusched.exe                   3960 Console                    1      5,128 K

DivXUpdate.exe                3044 Console                    1     16,160 K

WiFiMsg.exe                   3984 Console                    1      6,404 K

HpqToaster.exe                2236 Console                    1      7,188 K

wmpnscfg.exe                  3784 Console                    1      6,536 K

wmpnetwk.exe                  3732 Services                   0     11,196 K

skypePM.exe                   2040 Console                    1     25,960 K

Я хочу получить идентификатор процесса skypePM.exe.Как это возможно в Java?

Любая помощь приветствуется.

Ответы [ 4 ]

2 голосов
/ 29 июня 2010

Алгоритм

  1. Открыть файл.
  2. В цикле прочитать строку текста.
  3. Если строка текста начинается с skypePM.exe, тоизвлечь номер.
  4. Повторять цикл до тех пор, пока все строки не будут прочитаны из файла.
  5. Закрыть файл.

Реализация

import java.io.*;

public class T {
  public static void main( String args[] ) throws Exception {
    BufferedReader br = new BufferedReader(
      new InputStreamReader(
      new FileInputStream( "tasklist.txt" ) ) );

    String line;

    while( (line = br.readLine()) != null ) {
      if( line.startsWith( "skypePM.exe" ) ) {
        line = line.substring( "skypePM.exe".length() );
        int taskId = Integer.parseInt( (line.trim().split( " " ))[0] );

        System.out.println( "Task Id: " + taskId );
      }
    }

    br.close();
  }
}

Альтернативная реализация

Если у вас установлен Cygwin и соответствующие инструменты, вы можете использовать:

cat tasklist.txt | grep skypePM.exe | awk '{ print $2; }'
1 голос
/ 06 июня 2011

Если вы действительно хотите проанализировать вывод, вам может потребоваться другая стратегия. Если ваш выходной файл действительно является результатом выполнения списка задач, то он должен иметь несколько заголовков столбцов вверху, например:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============

Я бы использовал их, в частности набор знаков равенства с пробелами, чтобы разбить любые последующие строки, используя стратегию столбцов фиксированной ширины. Таким образом, вы могли бы иметь больше гибкости в разборе выходных данных при необходимости (то есть, возможно, кто-то ищет java.exe или wjava.exe). Помните, что последний столбец не может быть заполнен пробелами до конца.

Я скажу, в самом строгом смысле, существующие ответы должны работать только для получения PID.

1 голос
/ 29 июня 2010

Чтобы найти идентификатор процесса приложения SlypePM ..

  1. Откройте файл
  2. , теперь читайте строки одну за другой
  3. найдите строку, содержащую SkypePM.exe в начале
  4. В строке, содержащей SkypePM.exe, проанализируйте строку, чтобы прочитать числа после имени процесса, оставляя пробелы.
  5. Вы получите идентификатор процесса

Это все строковые операции.

Помните, что формат файла не должен изменяться после написания кода.

0 голосов
/ 29 июня 2010

Реализация на Java не очень хороший способ. Оболочка или другие скриптовые языки могут вам сильно помочь. В любом случае, JAWK - это реализация awk на Java, я думаю, что она может вам помочь.

...