如何使用 autohotkey 执行单个 .java 文件?
How can I execute single .java file with autohotkey?
我想使用 AutoHotkey.Normally 执行选定的 java 代码 我可以使用以下 cmd 命令执行单个 java 文件:
javac execute.java //compiling and creating execute.class
java execute //executing .class file
我想用 AutoHotkey.I 编写以下 AutoHotkey 代码
来自动化这个过程
^+e::
sleep 30
Send ^c
sleep 30
FileAppend,Clipboard,"C:\Users\q\Desktop\execute.java"
sleep 30
run cmd.exe,javac execute.java,hide ; compiling successfully
sleep 2000
results := ComObjCreate("WScript.Shell").Exec("cmd.exe java execute").StdOut.ReadAll() ; can't display executing result
sleep 1000
msgbox % results
return
但我得到以下结果:https://imgur.com/a/PwsxqEBresults。所以我无法正确查看 results := ComObjCreate("WScript.Shell").Exec("cmd.exe java execute").StdOut.ReadAll()
的结果 command.How 我可以解决这个问题吗?
您的脚本存在的问题是:
- 你不需要那么多
Sleep
。
- 部分参数格式错误。
- 您需要一个循环来读取
WScript.Shell
的输出。
- 存在一些工作目录问题。
以下内容已经过测试:
^+e::
Java_CopyCompileAndRun() {
Static objShell := ComObjCreate("WScript.Shell") ; Speeds up subsequent runs
KeyWait Shift ; Possilby unnecessary
KeyWait e ; Possilby unnecessary
Clipboard := ""
Send ^c
ClipWait 1
FileDelete % "C:\Users\q\Desktop\execute.java"
FileAppend % Clipboard, % "C:\Users\q\Desktop\execute.java"
RunWait % A_ComSpec " /c ""javac execute.java""", C:\Users\q\Desktop\, Hide
objExec := objShell.Exec(A_ComSpec " /c ""cd ""C:\Users\q\Desktop\"" & java execute""")
While !(objExec.StdOut.AtEndOfStream && objExec.StdErr.AtEndOfStream) {
sStdOut .= objExec.StdOut.ReadAll()
, sStdErr .= objExec.StdErr.ReadAll()
Sleep 10
}
MsgBox % "StdOut :`n" sStdOut "`n`nStdErr :`n" sStdErr
}
我想使用 AutoHotkey.Normally 执行选定的 java 代码 我可以使用以下 cmd 命令执行单个 java 文件:
javac execute.java //compiling and creating execute.class
java execute //executing .class file
我想用 AutoHotkey.I 编写以下 AutoHotkey 代码
来自动化这个过程^+e::
sleep 30
Send ^c
sleep 30
FileAppend,Clipboard,"C:\Users\q\Desktop\execute.java"
sleep 30
run cmd.exe,javac execute.java,hide ; compiling successfully
sleep 2000
results := ComObjCreate("WScript.Shell").Exec("cmd.exe java execute").StdOut.ReadAll() ; can't display executing result
sleep 1000
msgbox % results
return
但我得到以下结果:https://imgur.com/a/PwsxqEBresults。所以我无法正确查看 results := ComObjCreate("WScript.Shell").Exec("cmd.exe java execute").StdOut.ReadAll()
的结果 command.How 我可以解决这个问题吗?
您的脚本存在的问题是:
- 你不需要那么多
Sleep
。 - 部分参数格式错误。
- 您需要一个循环来读取
WScript.Shell
的输出。 - 存在一些工作目录问题。
以下内容已经过测试:
^+e::
Java_CopyCompileAndRun() {
Static objShell := ComObjCreate("WScript.Shell") ; Speeds up subsequent runs
KeyWait Shift ; Possilby unnecessary
KeyWait e ; Possilby unnecessary
Clipboard := ""
Send ^c
ClipWait 1
FileDelete % "C:\Users\q\Desktop\execute.java"
FileAppend % Clipboard, % "C:\Users\q\Desktop\execute.java"
RunWait % A_ComSpec " /c ""javac execute.java""", C:\Users\q\Desktop\, Hide
objExec := objShell.Exec(A_ComSpec " /c ""cd ""C:\Users\q\Desktop\"" & java execute""")
While !(objExec.StdOut.AtEndOfStream && objExec.StdErr.AtEndOfStream) {
sStdOut .= objExec.StdOut.ReadAll()
, sStdErr .= objExec.StdErr.ReadAll()
Sleep 10
}
MsgBox % "StdOut :`n" sStdOut "`n`nStdErr :`n" sStdErr
}