使用invisible.vbs在后台运行BAT文件,但如何阻止它?

时间:2011-04-05 22:00:01

标签: windows vbscript batch-file process-management

我正在使用类似于此处提到的解决方案run bat file in background,但有问题的bat文件在后台运行比特币GPU挖掘器。有时我想阻止矿工,但因为我试图无形地运行它(因为我不想在我的任务栏中运行它)我无法阻止这个过程。我甚至无法在我的进程管理器中找到它(没有cmd.exe或conhost.exe)。 [我甚至不确定它在运行。]有什么帮助吗?

编辑:它绝对是在运行;用一个窗口打开过程显示矿工正在以一半的容量运行,这在过去表明矿工已经开了两次。

edit2:这是批处理文件的内容,如果有帮助的话。

我运行批处理文件以启动所有内容:

wscript.exe "D:\Desktop\invisible.vbs" "C:\Program Files (x86)\Bitcoin\DiabloMiner\bpm.bat"

bpm.bat:

cd "C:\Program Files (x86)\Bitcoin\DiabloMiner"
java -cp target\libs\*;target\DiabloMiner-0.0.1-SNAPSHOT.jar -Djava.library.path=target\libs\natives\windows com.diablominer.DiabloMiner.DiabloMiner -u <username> -p <password> -o <pool> -p 8332 -w 64 -f 1000

invisible.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

2 个答案:

答案 0 :(得分:2)

在没有看到批处理内容的情况下,我的猜测是CMD.exe运行您的批处理,启动您的比特币处理然后结束。这可以解释为什么你没有看到CMD.exe。

如果要查看cmd.exe的示例,可以创建一个永远不会结束的批处理。

:TOP
REM FOO
GoTo TOP

然后使用此批处理运行inivisible.vbs,您将在任务中看到cmd.exe。如果使用进程资源管理器,您将能够在命令行中查看该图像的批处理文件名称。哪个看起来像这样

`cmd / c“”C:\ Whaterver \ Looptest.bat“”

<强>更新

正如Harry Steinhilber已经指出过程将是java.exe

如果您运行进程资源管理器并选择Java.Exe,您应该在命令提示符

中看到它

java -cp target\libs\*;target\DiabloMiner-0.0.1-SNAPSHOT.jar -Djava.library.path=target\libs\natives\windows com.diablominer.DiabloMiner.DiabloMiner -u <username> -p <password> -o <pool> -p 8332 -w 64 -f 1000

这将允许您从正在运行的其他Java应用程序(如果有)中识别DataMiner。

答案 1 :(得分:0)

您可以使用VBScript。

set shell=createobject("wscript.shell")
dim cmdline
cmdline="C:\path\to\yourprogram.jar" ' HERE
set wmi=getobject("winmgmts:{impersonationLevel=impersonate}!\\"&shell.expandenvironmentstrings("%computername%")&"\root\cimv2")
for each process in wmi.instancesof("Win32_process")
    if process.name="java.exe" and instr(process.commandline,cmdline)>0 then
        process.terminate
    end if
next

很抱歉排长队。将其中显示HERE的文本更改为jar文件的位置,它将终止它。