以编程方式快速查找可执行文件路径

Mit*_*nck 7 java file path

我想在Java中以编程方式查找.exe文件路径,例如:

  • Skype.exe进入程序以查找到它的直接路径
  • 程序执行一个查找文件路径的算法
  • 程序返回文件路径C:\ Users\Public\Desktop\Skype.exe

我尝试过的方法是对系统文件进行排序,直到找到"skype.exe",但这需要花费大量的时间和资源.

是否有任何黑客可以使它几乎是即时的,比如可能是一个Win_Api函数/ cmd命令,或者是在整个文件系统中进行排序,直到找到该程序的唯一方法?

Mit*_*nck 2

我实际上发现了一些可行的东西,尽管不是最快的,但只需要大约 100 毫秒 - 500 毫秒即可完成,具体取决于 exe。

您需要使用运行时进程来执行此操作。

基本上,您进入驱动器的根目录,然后在 cmd 中使用这些命令搜索文件系统。

cd \
dir /s /b mytool.exe
Run Code Online (Sandbox Code Playgroud)

这将返回文件路径。

我的代码:

(我知道很黑客)

try {
        Process p = Runtime.getRuntime().exec("./res/getPrograms.bat " + exeName);
        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while(true) {
            line = input.readLine();
            if(line == null) {
                break;
            }
            System.out.println(line);
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

以及 .bat 文件(我将参数“eclipse.exe”传递给表示为 %1 的 bat 文件):

cd \
dir /s /b %1
exit
Run Code Online (Sandbox Code Playgroud)

输出变为:

C:\Users\Mitchell\workspace\Remote Admin>cd \ 

C:\>dir /s /b eclipse.exe 
C:\eclipse\eclipse.exe
Run Code Online (Sandbox Code Playgroud)