这是一个java程序代码,它运行记事本程序并粘贴存储在该程序本身中的特定文本......
我想知道你是否能解释一下String vbs
的值,还有File file
,以及Process p
中的("cscript //NoLogo " + file.getPath())
。如果你同样慷慨,那么请解释一下整个代码。
我是一个Java初学者,不完全是,但如果你想从0到10来判断,我会是1.5/10
import java.io.File;
import java.io.FileWriter;
import javax.swing.JTextField;
public class PasteToNotepad {
public static void main(String[] args) throws Exception {
String text = "Some text for testing.";
JTextField textField = new JTextField(text);
textField.setSelectionStart(0);
textField.setSelectionEnd(text.length() - 1);
textField.copy();
String vbs = ""
+ "Set WshShell = WScript.CreateObject(\"WScript.Shell\")\n"
+ "WshShell.Run \"notepad\", 9\n"
+ "WScript.Sleep 500\n"
+ "WshShell.SendKeys \"^V\"";
File file = File.createTempFile("PrintDialog", ".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);
fw.write(vbs);
fw.close();
Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
p.waitFor();
}
}
2条答案
按热度按时间fcg9iug31#
虽然这个问题 * 不是 * 主要关于
cscript //NoLogo
,不管它的标题,它仍然很好地谷歌为这个短语,所以让我们回答太多的细节了。我不知道为什么他们称之为"logo",但它正是你从内置的help@MByD中看到的。
因此,如果你正在管道输出,而不希望所有的微软样板,
//Nologo
-ify它。(
spam.js
中包含var spam = "spam";
。)而且,哇,这是一个可怕的错综复杂的方式来获得文本到记事本。我猜它更多的是教如何写一个文件和
exec
一个命令从Java,也许?kgsdhlau2#
你基本上要做的是:
1.创建包含脚本的字符串(
String vbs = ...
)1.将其写入文件(
File file = File...
到fw.close()
)1.通过调用cscript(
Process p = Runtime.getRuntime().exec(...)
)在单独的进程中执行此脚本关于
cscript //NoLogo
,这与Java几乎没有任何关系,这是一个Windows命令: