Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在后台运行一个BAT文件,使用invisible.vbs,但是如何停止它?_Windows_Vbscript_Batch File_Process Management - Fatal编程技术网

Windows 在后台运行一个BAT文件,使用invisible.vbs,但是如何停止它?

Windows 在后台运行一个BAT文件,使用invisible.vbs,但是如何停止它?,windows,vbscript,batch-file,process-management,Windows,Vbscript,Batch File,Process Management,我正在使用一个类似于这里提到的解决方案,但是有问题的bat文件在后台运行一个比特币GPU miner。有时我想停止miner,但由于我试图以不可见的方式运行它(因为我不希望它出现在我的任务栏中),因此无法停止该过程。我甚至在我的进程管理器中找不到它(没有cmd.exe或conhost.exe)。[我甚至不确定它是否在运行]有什么帮助吗 编辑:它肯定在运行;用一个窗口打开流程表明该矿工以一半的产能运行,这在过去表明该矿工打开了两次 edit2:如果有帮助的话,这里是批处理文件的内容 运行批处理文件

我正在使用一个类似于这里提到的解决方案,但是有问题的bat文件在后台运行一个比特币GPU miner。有时我想停止miner,但由于我试图以不可见的方式运行它(因为我不希望它出现在我的任务栏中),因此无法停止该过程。我甚至在我的进程管理器中找不到它(没有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
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-p-o-p8332-w64-f 1000
不可见。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
set args=WScript.Arguments
num=args.Count
如果num=0,则
Echo“用法:[CScript|WScript]invi.vbs aScript.bat”
WScript.Quit 1
如果结束
sargs=“”
如果num>1,则
sargs=“”
对于k=1到num-1
anArg=参数项(k)
sargs=sargs&anArg&“
下一个
如果结束
设置WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.Run“”&WScript.Arguments(0)和“”&sargs,0,False

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

如果您想在看到cmd.exe时看到一个示例,您可以创建一个永远不会结束的批处理

:TOP
REM FOO
GoTo TOP
然后使用此批处理运行inivisible.vbs,您将在任务中看到cmd.exe。如果使用process explorer,您将能够在图像的命令行中看到批处理文件的名称。看起来像这样

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

更新

正如Harry Steinhilber已经指出的,这个过程将是java.exe

如果运行process explorer并选择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-p-o-p8332-w64-f 1000

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

您可以使用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

对不起,排了这么长的队。将此处显示的文本更改为jar文件的位置,它将终止该文件。

我将批处理文件的内容添加到问题中。我不确定你的答案是否对我有帮助。根据批处理文件,我认为CMD.exe不会仍然运行。我会寻找一个java.exe进程来代替它。谢谢Harry!不过,我想我必须注意要杀死哪个java.exe。