我目前正在学习Java,遇到此问题。我不确定是否可以这样做,因为我仍处于学习阶段。所以在我的Java主要编码中:

import java.io.File;
import java.io.IOException;

public class TestRun1
{
    public static void main(String args[])
    {

        //Detect usb drive letter
        drive d = new drive();
        System.out.println(d.detectDrive());

        //Check for .raw files in the drive (e.g. E:\)
        MainEntry m = new MainEntry();
        m.walkin(new File(d.detectDrive()));

        try
        {
            Runtime rt = Runtime.getRuntime();
            Process p = rt.exec("cmd /c start d.detectDrive()\\MyBatchFile.bat");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}


“ cmd / c start d.detectDrive()\ MyBatchFile.bat”不起作用。我不知道如何替换变量。

然后我创建了一个批处理文件(MyBatchFile.bat):

@echo off
set Path1 = d.detectDrive()
Path1
pause
set Path2 = m.walkin(new File(d.detectDrive()))
vol231.exe -f Path2 imageinfo > Volatility.txt
pause
exit


这没用。请不要笑。

因为我只是从Java和批处理文件开始的,所以我确实在编程方面并不擅长。有人可以帮我吗?我不想硬编码成为E:或类似的东西。我想使其变得灵活。但是我不知道该怎么做。我真诚地寻求任何帮助。

最佳答案

程序:

您应该将检测驱动器的方法的返回值附加到文件名中,并组成正确的Batch命令字符串。

脚步:

获取方法的返回值


字符串驱动器= d.detectDrive();
因此,驱动器包含值E:


将驱动器的值附加到文件名


drive +“ \ MyBatchFile.bat”
因此,我们有E:\ MyBatchFile.bat


将结果附加批处理命令


cmd / c开始“ + drive +” \ MyBatchFile.bat
结果是cmd / c start E:\ MyBatchFile.bat


因此,要调用批处理命令,最终代码应如下所示:

    try {
        System.out.println(d.detectDrive());
        Runtime rt = Runtime.getRuntime();
        String drive = d.detectDrive();
        // <<---append the return value to the compose Batch command string--->>
        Process p = rt.exec("cmd /c start "+drive+"\\MyBatchFile.bat");
    }
    catch (IOException e) {
        e.printStackTrace();
    }

10-02 02:15