How to open the command prompt and insert commands using Java?
I know that people recommend staying away from rt.exec(String), but this works, and I don't know how to change it into the array version.
rt.exec("cmd.exe /c cd \""+new_dir+"\" & start cmd.exe /k \"java -flag -flag -cp terminal-based-program.jar\"");
Run cmd commands through Java
One way to run a process from a different directory to the working directory of your Java program is to change directory and then run the process in the same command line. You can do this by getting cmd.exe
to run a command line such as cd some_directory && some_program
.
The following example changes to a different directory and runs dir
from there. Admittedly, I could just dir
that directory without needing to cd
to it, but this is only an example:
import java.io.*;
public class CmdTest {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \"C:\\Program Files\\Microsoft SQL Server\" && dir");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
}
}
Note also that I'm using a ProcessBuilder
to run the command. Amongst other things, this allows me to redirect the process's standard error into its standard output, by calling redirectErrorStream(true)
. Doing so gives me only one stream to read from.
This gives me the following output on my machine:
C:\Users\Luke\StackOverflow>java CmdTest
Volume in drive C is Windows7
Volume Serial Number is D8F0-C934
Directory of C:\Program Files\Microsoft SQL Server
29/07/2011 11:03 <DIR> .
29/07/2011 11:03 <DIR> ..
21/01/2011 20:37 <DIR> 100
21/01/2011 20:35 <DIR> 80
21/01/2011 20:35 <DIR> 90
21/01/2011 20:39 <DIR> MSSQL10_50.SQLEXPRESS
0 File(s) 0 bytes
6 Dir(s) 209,496,424,448 bytes free
Execute commands in cmd using Java
run
Runtime runtime = Runtime.getRuntime();
try {
Process p = runtime.exec("start cmd.exe /k \"ghci.exe test.hs\"");
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
referens
http://ss64.com/nt/cmd.html
more info at How to open the command prompt and insert commands using Java?
Enter commands in the command prompt after it's been opened in Java?
The normal way to do this would be to put the commands in a script and execute the script.
You will need to consume the output of the child process (stdout and stderr) on separate threads, or your process will block.
how to prompt open file window from command prompt in java?
You can use a JFileChooser
to be able to select a file from a dialog box.
Assuming you want to launch it outside a Java Swing application, you could proceed as next:
final JFileChooser fc = new JFileChooser();
// Open the dialog using null as parent component if you are outside a
// Java Swing application otherwise provide the parent component instead
int returnVal = fc.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
// Retrieve the selected file
File file = fc.getSelectedFile();
try (FileInputStream fis = new FileInputStream(file)) {
// Do something here
}
}
More details about How to Use File Choosers
Related Topics
Java.Awt.Eventqueue.Invokelater Explained
How to Serve .HTML Files with Spring
Surefire Is Not Picking Up Junit 5 Tests
How to Connect to SQL Server Using Windows Authentication from Java Ee Webapp
Move/Copy File Operations in Java
Java Lambdas 20 Times Slower Than Anonymous Classes
No Suitable Driver Found for 'Jdbc:Mysql://Localhost:3306/Mysql
How to Open the Command Prompt and Insert Commands Using Java
Java 7 Underscore in Numeric Literals
How to Concatenate Int Values in Java
What's the Purpose of Try-With-Resources Statements
How to Convert a Byte Array to Base64 in Java
Any Way to Declare an Array In-Line