Как мне написать pidfile в командном файле Windows - PullRequest
0 голосов
/ 24 февраля 2010

Я пишу некоторый код Java, который должен быть в состоянии написать pid-файл на Unix-подобных и Windows-машинах. На машинах Unix я пишу скрипт оболочки bash, который содержит что-то вроде этого

command 1>/dev/null 2>&1 &
echo $! > pidfile

Выполняет команду, перенаправляет весь вывод в нирвану и переводит команду в фоновый режим (отсоединяет ее от оболочки). Pid-файл содержит идентификатор процесса команды. Позже я могу пойти и прочитать идентификатор процесса из файла. Это все отлично работает.

Теперь на Windows, я думаю, что я должен сделать что-то вроде

start command

и затем как-то эквивалент для пути Unix. Проблема в том, что я не имею никакого контроля, где программа будет использоваться с точки зрения версии Windows или что установлено на машине. У меня также нет доступа к машине с Windows для тестирования, и я не могу найти ничего простого в Интернете. Я знаю, что в powershell есть функция get-process, но я не знаю, будет ли установлен PowerShell на компьютере, поэтому я не могу на это полагаться.

Есть ли какая-нибудь простая команда или синтаксис для командного файла DOS, которая делает то, что мне нужно?

1 Ответ

2 голосов
/ 25 февраля 2010

вы можете использовать VBScript

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strProcess = objArgs(0)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

Error = objWMIService.Create(strProcess, null, null, intProcessID)
If Error = 0 Then
    Wscript.Echo intProcessID 
Else
    Wscript.Echo Error
End If

в командной строке, скажите, хотите ли вы запустить блокнот:

c:\test> cscript //nologo mycreatepid.vbs "notepad.exe"
3120

вы можете записать возвращаемое значение в пакетный файл, используя цикл for. (В противном случае вы можете научиться использовать vbscript и делать все в vbscript)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...