如何让计划任务执行时显示CMD窗口

公司用计划任务调用bat文件进行回归测试。今天修改了一下配置,结果运行时看不见黑框cmd窗口了,非常不利于查错。

经过公司前辈的指点发现了问题。

在计划任务中右键单击一个任务,点击Export(导出)。在导出的XML中有如下一行:

<LogonType>Password</LogonType>

在命令行中输入

schtasks /change /it /tn "TASK1"

再次导出XML文件,LogonType变为:

<LogonType>InteractiveTokenOrPassword</LogonType>


问题解决。

### 回答1: ProcessBuilder可以用于执行cmd命令,具体步骤如下: 1. 创建ProcessBuilder对象,设置要执行的命令和参数。 2. 调用ProcessBuilder的start()方法启动进程。 3. 调用Process的waitFor()方法等待进程执行完毕。 4. 调用Process的getInputStream()方法获取进程的输出流,读取命令执行结果。 5. 调用Process的getErrorStream()方法获取进程的错误输出流,读取错误信息。 6. 调用Process的exitValue()方法获取进程的退出值,判断命令是否执行成功。 示例代码: ``` ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir"); Process p = pb.start(); p.waitFor(); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } InputStream es = p.getErrorStream(); BufferedReader er = new BufferedReader(new InputStreamReader(es)); while ((line = er.readLine()) != null) { System.err.println(line); } int exitValue = p.exitValue(); if (exitValue == ) { System.out.println("命令执行成功"); } else { System.err.println("命令执行失败"); } ``` ### 回答2: ProcessBuilder是Java提供的一个用于创建和管理外部进程的类。使用ProcessBuilder可以执行各种外部命令,包括执行cmd命令。 通过ProcessBuilder执行cmd命令的步骤如下: 1. 创建一个ProcessBuilder对象,其中传入需要执行cmd命令作为参数,如:ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir"); 2. 可以通过pb.redirectOutput()和pb.redirectError()方法设置命令的输出和错误重定向,以便将命令的输出信息保存到文件中或直接输出到控制台上。 3. 调用ProcessBuilder对象的start()方法启动进程,并返回一个Process对象。 4. 可以通过Process对象的getInputStream()、getOutputStream()和getErrorStream()方法获取进程的输入、输出和错误流,对它们进行读取和写入操作。 5. 使用Process对象的waitFor()方法可以等待进程执行完毕,并返回进程的退出值,通常来说,0表示执行成功。 下面是一个简单的示例代码,展示了如何使用ProcessBuilder执行cmd命令,并将输出信息输出到控制台上: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class CmdProcessBuilderExample { public static void main(String[] args) { try { // 创建ProcessBuilder对象,执行dir命令 ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir"); // 启动进程 Process process = pb.start(); // 获取进程的输入流 InputStream inputStream = process.getInputStream(); // 将输入流转换为字符流 InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "GBK"); // 包装字符流,方便读取 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 读取命令输出信息 String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } // 关闭资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); // 等待进程执行完毕,并打印进程退出值 int exitValue = process.waitFor(); System.out.println("Exit Value: " + exitValue); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 以上就是使用ProcessBuilder执行cmd命令的基本步骤和示例代码。通过ProcessBuilder可以方便地执行各种外部命令,从而实现更多复杂的功能。 ### 回答3: ProcessBuilder是Java中的一个类,用于启动子进程,并对子进程进行控制和管理。通过ProcessBuilder可以执行操作系统的命令行命令,其中包括执行cmd命令。 要使用ProcessBuilder执行cmd命令,首先需要创建一个ProcessBuilder对象,并指定要执行的命令。可以使用ProcessBuilder的构造方法来指定命令,也可以使用command()方法来设置命令。 例如,以下代码可以用ProcessBuilder执行一个cmd命令: ```java ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "命令参数"); ``` 在这个例子中,创建了一个ProcessBuilder对象,并指定了要执行的命令为"cmd"。"/c"参数表示执行完命令后关闭cmd窗口,"命令参数"是要执行的具体命令。 接下来,可以通过start()方法启动子进程,并获取到这个子进程的输出流和错误流。可以使用getInputStream()方法获取到子进程的输出流,可以使用getErrorStream()方法获取到子进程的错误流。 例如,以下代码可以获取到子进程的输出结果: ```java Process process = pb.start(); InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } ``` 在这个例子中,通过start()方法启动子进程,并获取到子进程的输出流inputStream。然后使用BufferedReader读取输出流的内容,并逐行输出。 使用ProcessBuilder执行cmd命令,可以完成许多系统管理的任务,例如执行一些批处理操作、执行文件操作命令等。需要根据具体的需求来设置cmd命令,并对子进程的输出进行处理。 总的来说,通过ProcessBuilder执行cmd命令可以实现对操作系统的命令行的控制和管理,便于进行一些系统管理的任务
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值