Home
歡迎您一起進入Java的世界,也歡迎一起來討論程式設計的議題
姓名:

E-Mail:

留言:

若有不當之言詞或與本版無關之留言,本站保留刪文之權利
本版內容若有侵權,敬請email bm4acd@gmail.com 告知,謝謝!

Yoyo 你好,我是這個暑假學 Java 的新手,
想請教有關 Runtime.exec() 的問題,我已經在
Google 還有一些論譠找了找,但大家都只有
說,可以這樣子使用,但問題仍在 ^_^\"\".....。

我使用 exec() 在windows下執行.bat 檔,我的bat
檔是用java產生cmd來copy檔案,但出了問題!!

我自行run bat file,都很ok,但交給exec() run它一次,
只執行三行指令????怪怪的!

AYR(itsayr[at]pie.com.tw) @2004/09/02 17:27:42

AYR
可否把你的batch file丟上來看看?
有沒可能是執行路徑等之類的影響?

yoyochen() @2004/09/03 09:22:20


嗯!

我桌面上有6個*.txt檔,各命名為A.txt~F.txt,
還有一個以日期命名的資料夾。目的是要把在桌面
上所有的檔案,移到日期資料夾內!!!!!!!!

我執行這個class時,
他都只run 前面三行,後面它很像就忘了run。

move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\A.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\B.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\C.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\D.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\E.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\F.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"

Yoyo 謝謝你!

AYR(itsayr[at]pie.com.tw) @2004/09/03 15:05:38

怪怪的!
上面的留言是我post 錯了嗎?怎麼都加上了escape!!!

move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\A.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\B.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\C.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\D.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\E.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\F.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.03-3\"


AYR(itsayr[at]pie.com.tw) @2004/09/03 15:14:55

如果修改一下那個batch file,把前面三行移到後面去,也就是變成DEFABC這樣的順序,還是只會執行三行嗎?還是會有所不同?

yoyochen() @2004/09/03 17:02:35

嗯!還是一樣!
我試了DEFABC 和DBEFAC 都一樣,
只有先三行執行,後三行又忘記執行了!
這次我就把所有函試內的程式清空,留了幾個
要用的變數,就直接call exec( )。 難到說在鬼月Run程式都會這樣子嗎? ^_^||| ..... 不好笑。

public void checkMakeDir(String withoutPickAndArng[] , String pickedAndArng[]) {
if (withoutPickAndArng[0] == null) { System.out.println(\"These is nothing to do\"); }
else {
String tempDir = rootPosition+pickedAndArng[j-1];
String scriptDir = tempDir.concat(\"\\\\Script_Log\");
String scriptFile = scriptDir.concat(\"\\\\Script.bat\");

try {
Runtime.getRuntime().exec(scriptFile);
} catch (IOException e) { System.out.println(e+\"\\nIO Exception --> When executing....\"); }
}
}


AYR(itsayr[at]pie.com.tw) @2004/09/03 18:01:42

AYR
我試著寫了一個程式來模擬你的要求,可是發現沒有你遇到的問題耶。
嗯...如果你需要我的程式,再請告訴我

你的scriptFile也許\可考慮將stdout output到log file中,也許\可以查出些端倪,如\"script.bat\"改為\"script.bat > log.txt\",執行後再看看log.txt中有沒有什麼訊息。

yoyochen() @2004/09/04 20:11:40

嗯!
我stdout output 出去了!
沒什麼error 出現,而且我重新寫個測試的程式,
很單純只是執行Batch file(手動執行結果正常),但
還是出現了一樣的問題!我程式是這樣子寫的!

import java.io.*;
import java.lang.*;

public class ExecTest {
public static void main(String[] args) {
try {
Runtime.getRuntime().exec(\"C:\\\\Documents and Settings\\\\itsayr\\\\桌面\\\\2004.09.05-0\\\\Script_Log\\\\Script.bat\");
System.out.println(\"Execute Finish.....\");
} catch (IOException e) { System.out.println(\"Execute Error.....\\n********\" + e +\"*********\" ); }
}
}

可能是觀念不夠正確以至寫錯!
希望可以看看Yoyo 是怎麼寫的,謝謝Yoyo,那
麼辛苦的幫我試!!!


AYR(itsayr[at]pie.com.tw) @2004/09/07 18:09:40

AYR
已寄給您參考了,看看是否符合您的要求

yoyochen() @2004/09/08 13:22:00

Yoyo 非常謝謝你!
我的問題解決了,超高興的!

不過,是參考Yoyo 的寫法,使用
兩個batch file,但為什麼一定要先chnage directory 呢?
我試了試,不 change directory 給決對路徑 ,會出現之前的情況
,但直接run第一個卻ok。

第一個batch, was named \"Run.bat\"
\"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.09-0\\Script_Log\\Script.bat\"

第二個batch, was named \"Moving.bat\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\A.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.09-0\"
move /Y \"C:\\Documents and Settings\\itsayr\\桌面\\B.txt\" \"C:\\Documents and Settings\\itsayr\\桌面\\2004.09.09-0\"

像這樣子的問題請問Yoyo 該找怎樣子的書呢?
像這樣子總麻煩Yoyo,不大好意思^_^.....................

等一下來試式看寫成一個batch file!

超感動,謝謝Yoyo.....



AYR(itsayr[at]pie.com.tw) @2004/09/09 14:33:49

AYR
我覺得在處理目錄名稱包含空白時,有時就是會出現一些狀況。
所以我都習慣先換目錄到裡面再來處理。

yoyochen() @2004/09/10 08:36:27

小杉
把你的post移到生活小記那邊去了

yoyochen() @2004/09/14 08:46:30

JBuilder 2005快上市了
有興趣的人可以在Borland網站上看看
嗯...支援JDK 5.0 (1.5)跟JSF都蠻迷人的

yoyochen() @2004/09/24 18:18:00

姓名:

E-Mail:

留言: