我试图找出什么是运行该批处理文件从外部应用程序的完整路径获得一个运行该批处理文件的名称。 该进程是cmd.exe,但我无法获得实际运行蝙蝠的名称。 在任务管理器中,它显示为cmd.exe 如果我将该过程作为对象获取,则与该蝙蝠最近的属性位于MainWindowTitle中。 有没有办法从运行cmd进程中获得完整的运行bat路径?从外部应用程序
从外部应用程序
回答
的问题How to check if a process is running via a batch script?的answer written by vtrz包含你正在寻找的命令:
%SystemRoot%\System32\wbem\wmic.exe PROCESS where (name="cmd.exe") GET CommandLine
Windows Management Instrumentation Command-line实用程序与这些参数通过用于启动它们的命令行行列出所有正在运行的进程cmd.exe
线。
但是,这意味着如果用户打开命令提示符窗口并从此窗口中启动批处理文件(由已启动cmd.exe
执行),则此命令进程的命令行输出仅为"C:\Windows\System32\cmd.exe"
。据我所知,无法从已经运行的命令进程中获取该命令进程当前执行的信息。
好吧,如果执行的批处理文件中使用命令冠军给自己的控制台窗口意义的标题,也可以使用任务列表获取有关命令进程的信息与特定的窗口标题或使用TASKKILL终止或杀死一个具有特定窗口标题的命令进程。
我不敢相信我没想到打开WMI! Duh ... WIN32_Process - > CommandLine会做的。我将不得不通过ProcessID来查询WIN32_Process,以确保从那里获得正确的实例并对CommandLine进行分词。谢谢 :) – Andrei
这是我结束了(VB.NET)的功能,如果有人在意。它可以从cmd.exe进程检索蝙蝠路径,也可以使用它从wscript.exe获取vbs文件。它接收cmd.exe或wscript.exe的ProcessID作为参数,并返回一个字符串列表,因为我还需要将参数文件传递给vbs。解析部分在我使用它的场景中的列表中工作良好。
Function GetArgFiles(PID As Integer) As List(Of String)
Dim Ret As New List(Of String)
Try
Dim MOS As New ManagementObjectSearcher("root\CIMV2", "SELECT Name, CommandLine FROM WIN32_Process where ProcessID = '" & PID & "'")
For Each MO As ManagementObject In MOS.[Get]()
Try
Dim name As String = MO.GetPropertyValue("Name")
Dim CommandLine As String = MO.GetPropertyValue("CommandLine")
If CommandLine Is Nothing Then Exit Try
For Each CLE As String In New List(Of String)(CommandLine.Split(Chr(34)))
Try
CLE = CLE.Trim
If CLE.Length < 5 Then Continue For
If CLE.ToLower Like "*" & name.Trim.ToLower & "*" Then Continue For
If CLE Like "*:\*" Then
CLE = CLE.Substring(CLE.LastIndexOf(":\") - 1)
Else
Continue For
End If
If CLE.Contains("/") Then CLE = CLE.Substring(0, CLE.LastIndexOf("/"))
If CLE.Substring(5).Contains(":") Then CLE = CLE.Substring(0, CLE.LastIndexOf(":"))
If File.Exists(CLE.Trim) Then Ret.Add(CLE.Trim)
Catch
End Try
Next
Catch
End Try
Next
Catch
End Try
Return Ret
End Function
- 1. 从外部应用程序
- 2. 从通用Windows应用程序打开外部应用程序
- 3. 从JavaFX打开外部应用程序
- 4. 如何从外部应用程序
- 5. 从QML启动外部应用程序
- 6. 从外部应用程序Shopify API? (backbone.js)
- 7. 从外部应用程序在Android
- 8. 从node.js启动外部应用程序
- 9. 从外部应用程序记录
- 10. ASP.NET - 从外部应用程序
- 11. 从外部应用程序自定义射手应用程序
- 12. 从我的应用程序启动外部应用程序
- 13. UIAlertView外部应用程序
- 14. JDesktopPane外部应用程序?
- 15. 从应用程序外部调用Sparkle更新程序
- 16. 从Google Chrome扩展程序启动外部应用程序?
- 17. 从反应原生应用程序打开外部应用程序
- 18. 如何从我的Codename One应用程序调用外部应用程序
- 19. 打包的应用程序 - 从应用商店外部安装
- 20. 如何从外部应用程序的外部应用程序中的sql服务器获取选项集值
- 21. (安卓)在外部应用程序启动文件,并从外部应用程序
- 22. 如何从外部应用程序在iPhone上启动Yandex Maps应用程序?
- 23. 如何从外部应用程序调整d3d应用程序的大小。 (C#)
- 24. 从外部来源更新apk应用程序的安卓应用程序
- 25. 如何从iphone应用程序启动外部应用程序(NDrive)
- 26. 从应用程序外部测试应用程序服务的最佳方法
- 27. 检测应用程序是否从应用程序的“外部”启动/恢复
- 28. 将文本从自己的应用程序复制到外部应用程序
- 29. 从外部应用程序测试.Net C#WPF MVVM应用程序
- 30. 如何从我的应用程序中关闭外部应用程序?
简单易行。回声%0 – Squashman
@Andrei:'任务列表/网络连接 “imagename EQ CMD.EXE”/ v'可能会有帮助。用'for/f'循环解析它以获得窗口标题。 – Stephan
@Squashman:请再读一遍我的问题。试图让我更清楚我以后的事情。 – Andrei