Supressing Dos window on executing system command
Hey,
is there any way to supress the dos window when I call a system dependent .exe or bat file?
AND
is there any way to run a .exe file as a background process so that no window of it pops up?
I use the Runtime.exe() to execute the system command but I'm annoyed by the dos windows it opens up.
Any help highly appreciated.
This is an AGE OLD Issue which Sun keep burying. By burying I mean it has been the top of their bugs/requests list many times. They just decide its closed without making any such fixes. The community is not pleased with Suns actions in this respect, blowing off their highest rated request.
Answer:
If you start your program with java.exe, then you wont get that window when you do runtime commands. If you start with javaw.exe, you will. They are blaiming it on M$ but most feel its just a silly Sun position and lame attempt to put somethign on M$ that is not really on M$. Sun can do it but they feel their solution is unstable. Most people have ended up making .exes to replace java.exe to get rid of that hideous console window. JBuilder has an interesting (but not my type) solution.
If you search the top 10 bugs/ requests this one has likely resurfaced as Sun keeps erasing it, but the people keep voting it back to the top...
Similar Messages
-
Hey all
I need to write Java application that executes windows system commands. In the following example I tried to execute the command DATE /T but i got an exception. Could any one help ?
import java.io.*;
public class Shell {
public static void main(String[] args) {
String s = null;
try {
Process p = Runtime.getRuntime().exec("date /t");
BufferedReader input = new BufferedReader(
new InputStreamReader(p.getInputStream()));
System.out.println("Here's the standard output of the command: ");
while ((s = input.readLine()) != null) {
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}hi,
give command as "cmd /c date /t"
to execute any dos commands using exec() method, you have to send those commands as parameters to the cmd.exe .
regards,
Mahender -
Executing System Commands In Java
Hi,
I am not sure if this is a bug � or I am just doing this wrong. I have
written a program to move files into ~/.trash/ . My problem is that this
works only for files without spaces � but for files with spaces it will
not work. Some of my code is below.
I have temporarily uploaded the complete file at
http://www.geocities.com/carmaski/Remove.java
public static void main(String args[]) {
String currDir = System.getProperty("user.dir") + "/";
String trashDir = "\" \"/home/masca/.trash/";
String commandString = "";
for (int i = 0; i < args.length; i++ ) {
File tmpFile = new File(currDir + args);
if(tmpFile.exists()) {
commandString = "mv \"" + currDir + args[i] + trashDir
+ args[i] + getTimeTag() + "\"";
System.out.println("The command would be -- " +
commandString);
try {
Process p = Runtime.getRuntime().exec(commandString);
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
As an example I tried � this with a file that has a space � and I get
the following output.
The command would be -- mv "/home/masca/WORK/Text File"
"/home/masca/.trash/Text File_2005.04.17_04hrs:25mins:36secs"
However the file remains without being moved.
I cannot understand why the mv command does not work in java. If I
manually copy this to the command line I can get the file to work. It
should be noted that this program works perfectly if the file does not
have a space.
Regards,
RioUse File.separator or simply / instead of Windows
backslashes.
- SaishI think OP is on a unix machine, and he still needs to escape the spaces. The escape character is, of course, a back-slash.
Depending on the shell (my experience is with bash), to execute the command mv Test File.txt newTest File.txt, the file names either need to be double-quoted so that the command shell will treat them as a single token (I think that will work), or the spaces need to be escaped (I know that will work). In java, to include a single \ in a literal String, you need to escape the escape character, which is why I think two \\ are needed in the String, so that one will survive to be passed on to the exec command.
� {� -
Executing system commands query
I'm only just starting to program Java although I do have a good grounding in programming other languages so it is probably more a question of familarity, but hopefully someone can answer this problem I am having.
What I am trying to do is to execute TFTP on a Windows NT machine roughly every 5 seconds to get a file. To do this I have created a thread and within "public void run" I have a loop which contains something along the lines of:
Runtime.getRuntime().exec( "C:\\WINNT\\system32\\tftp.exe <ipaddress> get <filename>" );
Where I would specifiy a real IP address and filename.
I then do a sleep on the current thread to make it pause for a while.
The good news is it fetches the file every few seconds as I wanted. The bad news is it creates a new TFTP process each time and so it keeps using more and more memory.
Now I'm sure there are better ways to do this but I am working things out as I go along. The finished program will use an infinite loop which will run out of memory.
Can anyone recommend a solution or method to do this? Should I not bother with the thread, and what would be the best method to make it pause without killing processor time?
If possible can anyone mail me directly. Thanks in advance.
Mark.No I must quite specifically use TFTP. The scenario is information is entered via a FORM on a web page. The data is passed from the client to a server where I parse it using perl and write out the data in the necessary form to a file.
The java file I am writing then runs continually fetching this file every few seconds for another program to read. The other program reads the data every few seconds and uses one of the fields in the file to identify if it has changed since the last time it was fetched, if so it can act on the new data.
Using TFTP I can call it with a command line function to invoke TFTP to connect and fetch a file in one line. This seems much simpler using an existing executable than hand crafting code to do the same job.
I've managed to write something in C++ which performs the task. Java seems a bit more ackwared as it discourages you using system commands as it means the code is not portable.
However I originally wrote this as a Java file to expand my knowledge and as such I would like a proper solution.
Thanks for the suggestion though. I will have a look just out of curiosity now.
Mark. -
Executing system commands like cd on Linux from Java Code
Hi,
I need to execute a few system commands (like cd, ls, tar, etc.,) on RedHat Linux 7.1 from Java code. Any ideas plz.
best wishes,
IssacSince this thread mentioned using the DOS START command
from an exec(), I was wondering whether anyone else is
seeing the odd behavior I am.
Most of the examples showing how to read stdout and stderr
while the process is running show simple loops that use
getInputStream and getErrorStream and do read's until they
get back -1. Most of these examples are insensitive to the
state of the Process.waitFor that happens elsewhere and sort
of rely on the -1 and the waitFor happening roughly together.
Whenever I use this technique to launch an arbitrary DOS
command (e.g. Runtime.exec("dir")), it works fine, and
everything seems to terminate as expected.
However, when my command is something like:
Runtime.exec("cmd /c start my.bat")
where I deliberately use the START command to fork off
a different process, something odd happens.
Those simple read loops get an initial burst of stdout/stderr
bytes from the "start" part of the command. But then eventually,
these loops do a "read" which blocks on those InputStreams. Now,
even if my Process.waitFor returns (because the start returned
immediately), those read loops stay blocked **until that script
started by 'start' runs to completion**. It is like the child
of the child is holding those streams open somehow.
I found that by doing something like an InputStream.available() or
a BufferedReader.ready( ) check before dropping into the read,
and allowing the Process.waitFor completion to exit those read loops,
them I get what I expect -- namely immediate return from the START,
but apparently complete copies of stdout and stderr.
Curiously, in the case where the reads block until the child process
started by START terminates, they still don't get the child's/child's
stdout and stderr. It is just a long duration thread block that
yields no data.
Can anyone explain what is happening to a
Process.getInputStream( ).read()
when the process immediately does a START and returns? Why would
the read( ) stay blocked when the START finished launching a new child
process?
... ron cain -
Execute system command line instructions
Hi,
suppose that my java program has to execute a system command line instrction(let's say dir/p for dos or ls * f or linux)
how can we execute these system command line instructions programmatically from within a java program?
thanks indeed for helping...i want to thank jfbriere for the usefull link he/she provides me with. 1- He
2- You're welcome :-) -
How to execute system command from java program
Hi all,
I want to change directory path and then execute bash and other unix commands from a java program. When I execute them separately, it's working. Even in different try-catch block it's working but when I try to incorporate both of them in same try-catch block, I am not able to execute the commands. The change directory command works but it won't show me the effects of the bash and other commands.
Suggestions??The code I am using is....
try
String str="cd D:\\Test";
Process p=Runtime.getRuntime().exec("cmd /c cd
"+str);your str string is already having cd in it but again you ar giving cd as part of this command also please check this,i will suggest you to remove cd from str
Process p1=Runtime.getRuntime().exec("cmd /c mkdir
"+str+"\\test_folder");you should say mkdir once you change your path,but here you are saying mkdir first and then cd D:\Test(this is because of str)..please check this
Process p2=Runtime.getRuntime().exec("cmd /c bash");
Process p3=Runtime.getRuntime().exec("cmd /c echo
himanshu>name.txt");
catch(IOException e)
System.err.println("Error on exec() method");
e.printStackTrace();
Message was edited by:
ragas -
How to execute System command through Applet
Hi all,
How can I execute a System command through Applet.
I have written a code Runtime.exec("ls") in my applet but it gives me
this execption even if I certify the applet ->
java.security.AccessControlException: access denied (java.io.FilePermission <<ALL FILES>> execute)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
at java.security.AccessController.checkPermission(AccessController.java:399)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkExec(SecurityManager.java:802)
at java.lang.Runtime.exec(Runtime.java:548)
at java.lang.Runtime.exec(Runtime.java:418)
at java.lang.Runtime.exec(Runtime.java:361)
at java.lang.Runtime.exec(Runtime.java:325)
at Test.init(Test.java:24)
at sun.applet.AppletPanel.run(AppletPanel.java:344)
at sun.plugin.navig.motif.MotifAppletViewer.maf_run(MotifAppletViewer.java:123)
at sun.plugin.navig.motif.MotifAppletViewer.run(MotifAppletViewer.java:119)
at java.lang.Thread.run(Thread.java:484)
Thanks,
Manoj.There should be a lesson about this somewhere.
When you visit a web page, does it ask you if you want to have an applet loaded?
Answer: No
So, if you visit a page, and an applet is silently loaded which can then execute commands on your computer, is this good?
Answer: No
So why do you want to do this?
Is it good for anyone?
I mean, if I want to do "ls", can't I just open a command line? Do I need an applet to do it for me?
Either you have devious desires or your hacking together something that probably shouldn't be.
If you want to learn start here:
http://java.sun.com/docs/books/tutorial/security1.2/index.html
With the article entitled:
Quick Tour of Controlling Applets
Ian -
Executing system commands and capturing results
How do I get the result of executing a system command using Runtime? For example, if I execute "cmd /c dir", how do I get to the result of the dir command from the Process that is returned?
Process p = Runtime.getRuntime.exec("...");
InputStream in = p.getOutputStream();
// now read the "in" stream just as you would any
other stream.Slight typo getRuntime(), but it's close... -
Executing system command thru command line by passing it to a server
Hello,
I would like to know if there is any way by which I can call a system command through a java program . This system command takes parameters. If yes then how do i pass these paramaeters. This program will be called thru a sheel scripts and the parameters may vary...If I just look at the question in your post, I would say the answer is to call Runtime.getRuntime().exec("the system command"). But the title of the post mentioned passing it to a server; I won't attempt to answer that without knowing what it's all about.
-
Execute system commands from LabVIEW
Hi,
can anybody please help me with how to execute sytem commands from labview
(WIn98 in particular).
Basically I would like to execute the command "javac example.java"
Looking forward to responses.
Please be kind enough to send me a email also
manjul [email protected]Oops. Looks like I lost the attachment on the way. Sorry... Here it comes
Attachments:
Command_Execution.vi 21 KB -
I am using following code on mac:
app.system("/path/to/external/executable &");
It runs external program in background (without showing console/terminal).
On windows I tried many things like:
app.system('start "" "/path/to/external/executable"');
app.system('start "" /B "/path/to/external/executable"');
And I was also trying to solve it using visual basic.
Unfortunately everytime I use app.system(...) then windows console is showed on the screen for half of the second, then it disappears and progrm runs in background. Is it possible to avoid showing console window? Maybe there is another way of executing third party program?You can try to save a vbscript :
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("""\path\to\external\executable"""), 0, True
Set objShell = Nothing
than just execute it from javascript:
var vbFile = new File("path to your vbscript file")
vb.execute(); -
Hello,
I have a scnerio where I have to execute a Shell command like
"ping 192.168.0.26" but I think in Java 1.4 the System.execute() method is
deprecated. I used the Runtime command like this
Process p;
p = Runtime.getRuntime.exec("ping 192.168.0.26");but it shows me nothing on the console window. I want the output to be in the console window. How can I do that???Now I here is what I was trying before
import java.io.*;
public class test{
public static void main(String[] args){
Process p;
String cmd = "ping 192.168.1.1";
OutputStream out;
try{
p = Runtime.getRuntime().exec(cmd);
catch(IOException e){
e.printStackTrace();
}What else should be added to it -
Executing system commands on Linux
Hi,
I am trying to copy a file from Java code on Linux platform using the cp command.
Process p = Runtime.getRuntime.exec("bash -c \"cp file1 file2\"");
The process is exiting with exit code 2 and the file is not getting copied.
The same command when executed directly from the terminal window (command console of Linux) is working fine and the file is getting copied.
I am using RedHat Linux 7.1. Any ideas plz...
best wishes
Issactry splitting up the args into an arary
import java.io.*;
public class CP {
public static void main (String [] args) {
try {
String [] cmd = {"/bin/sh","-c","cp file1 file2"};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
System.out.println("exit value " + p.exitValue());
} catch (Exception e) {
System.out.println("err : " + e);
} -
Executing system command in java
I am trying to set ORACLE_SID value from java application.
when i echo $ORACLE_SID it shows me the old sid value
please help
my code --->
import java.util.*;
import java.lang.*;
import java.io.*;
public class runSysCommand{
public static void main(String args[]){
String osName=System.getProperty("os.name");
System.out.println("the OS name is :" +osName);
String s=null;
String[] cmds = {"/bin/ksh","-c","export ORACLE_SID=pd3"};
try
Process p = Runtime.getRuntime().exec(cmds);
BufferedReader stdInput=new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError =new BufferedReader(new
InputStreamReader(p.getErrorStream()));
//read the output
System.out.println("here is the op:\n");
while((s=stdInput.readLine())!=null){
System.out.println(s);
System.out.println("here is the error if any");
while((s=stdError.readLine())!=null){
System.out.println(s);
System.out.println("the OS name is :" +osName);
System.exit(0);
}//end try
catch (IOException e)
System.out.println("exception Happened" );
e.printStackTrace();
System.exit(-1);
}When you execute "/bin/ksh," you get a new shell - with a new environment. When you close the shell, it's environment (and any changes) go away. What you will need to do is write a shell script that takes the value as a parameter - the script then sets the environment and runs whatever other program you want to specify. When the script exists, the environment will also disappear.
Maybe you are looking for
-
Help! I can't do anything with my database even though i've connected!
Hello, I think I have properly connected to my MS SQL Server 2000 database, cause I'm not throwing any exceptions when I connect, but I can't insert or update any data, it displays error messages when i try to do either..i haven't tested delete cause
-
How to the wireless mouse with IPad 2
I bought the bluetooth wireless mouse for IPad, but unfortunately my IPad can't paired. Please assist
-
A warning to those with iWeb not publishing to .mac
I made a beautiful web site on iWeb, but when I lost my hard drive, even though I saved all my info, I can not restore my web page to the iWeb program! They make it impossible. I was told I should have save my page (not very sympathetic) but I had al
-
hello..!!! i cant enter to iTunes store in my Windows 7 why??? somebody help me please :S
-
New Ipad User looking for some good CRM suggestions for small business
Hello All, I am a new (and satisfied) Apple Ipad2 user. I am the sales rep for a small business that is in the health care field. I am looking for a good CRM program for the following reasons and I am wanting to know if there is a particular progra