我試圖找出什麼是運行該批處理文件從外部應用程序的完整路徑獲得一個運行該批處理文件的名稱。 該進程是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