我正在编写一些Java代码,需要能够在类似Unix的机器上编写pid文件。在unix机器上,我写了一个包含类似这样的
的bash shell脚本command 1>/dev/null 2>&1 &
echo $! > pidfile
执行命令,将所有输出重定向到nirwana并将命令放入后台(将其与shell分离)。 pidfile包含命令的进程ID。然后我可以去读取文件中的进程ID。一切正常。
现在在Windows上,我想我应该做一些像
这样的事情start command
然后以某种方式相当于Unix的方式。问题是我无法控制程序将在Windows版本或机器上安装的内容方面使用。我也无法访问Windows机器来测试,我在网上找不到任何简单的东西。我知道powershell中有get-process函数,但我不知道PowerShell是否会安装在机器上,所以我不能依赖它。
是否有一些简单的DOS批处理文件命令或语法可以满足我的需求?
答案 0 :(得分:2)
你可以使用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中执行所有操作)