用来实现OJ判题的windows批处理
来源:互联网 发布:五星广电软件 编辑:程序博客网 时间:2024/05/29 14:01
JAVA WEB的大作业想做一个简单的OJ,首先要实现的是拿到一份源代码后怎么去编译,获取编译错误信息,然后在时间限制内运行得到答案,最后比较答案和标准输出是否一致.我用的是windows的批处理程序,到时候用java调用这个程序得到结果.
第一步:
在d盘下建一个叫onlinejudge的文件夹,然后在这个文件夹下建5个文档,分别是a.cpp,answer.txt,in.txt,result.txt,time.txt,分别用来储存源程序,标准输出,输入,程序结果代码(0->AC,1->WA,2->TLE,3->RE,4->CE,TLE和PE还不知道怎么搞),程序运行时间,再建一个文件夹叫result.
第二步:
写一个command.bat的批处理程序,内容是
xcopy /y d:\onlinejudge\a.cpp d:\onlinejudge\resultxcopy /y d:\onlinejudge\in.txt d:\onlinejudge\resultxcopy /y d:\onlinejudge\answer.txt d:\onlinejudge\resultcd /d d:\onlinejudge\resultg++ a.cppif not exist a.exe (g++ a.cpp>error.txt 2>&1echo 4 >result.txtxcopy /y d:\onlinejudge\result\result.txt d:\onlinejudgedel /f /s /q d:\onlinejudge\resultexit)set /a start_time=(1%time:~9,2%-100)*10+(1%time:~6,2%-100)*1000start d:/tmp.battype in.txt|a.exe >out.txtset /a end_time=(1%time:~9,2%-100)*10+(1%time:~6,2%-100)*1000set /a used_time=%end_time%-%start_time%if %errorlevel% NEQ 0 (if %errorlevel% EQU 1 (echo 2 >result.txt) else (echo 3 >result.txt)echo %used_time% > time.txtxcopy /y d:\onlinejudge\result\result.txt d:\onlinejudgexcopy /y d:\onlinejudge\result\time.txt d:\onlinejudgedel /f /s /q d:\onlinejudge\resultexit)fc answer.txt out.txtif %errorlevel% EQU 0 (echo 0 >result.txt) else (echo 1 >result.txt)echo %used_time% > time.txtxcopy /y d:\onlinejudge\result\time.txt d:\onlinejudgexcopy /y d:\onlinejudge\result\result.txt d:\onlinejudgedel /f /s /q d:\onlinejudge\resultexit还有一个tmp.bat用来控制时间的
echo offcd /d d:/onlinejudge/resultchoice /t 1 /d y /n >nultasklist /nh|find /i "a.exe"if errorlevel 1 (echo success) else (taskkill /f /im a.exe)exit
第三步:
java程序往a.cpp里写程序,再调用command.bat,然后读取result.txt和time.txt的值就可以了.
1 0
- 用来实现OJ判题的windows批处理
- oj判题技巧
- 基于java的ACM online judge(OJ)在线判题系统实现
- windows批处理中实现延时的办法
- [Z]Windows批处理中延时的实现
- 【OJ使用起步】判题模式分析,重定向与文件比对的一种方法
- Windows常用的批处理
- Windows的批处理脚本
- Windows批处理 实现数组方法
- 批处理脚本实现WINDOWS系统的USB接口禁用
- ACM--OJ判题--HDOJ 1073--Online Judge--字符串
- OJ在线判题注意事项(C++版)
- ACM判题“服务器”(九度OJ 1339)
- Windows 用来定位 DLL 的搜索路径
- Windows 用来定位 DLL 的搜索路径
- Windows 用来定位 DLL 的搜索路径
- Windows 用来定位 DLL 的搜索路径
- Windows 用来定位 DLL 的搜索路径
- strtok()函数
- python中re模块的使用
- mallo(0)
- 集合二
- 《java入门第一季》之面向对象(private关键字与封装概念的初探)
- 用来实现OJ判题的windows批处理
- 奋斗吧,程序员——第二十五章 酒酣胸胆尚开张,鬓微霜,又何妨
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory
- php print 函数
- a stranger program
- HTML, HTTP,web综合问题
- java 验证码 gif 验证码 动图 验证码
- JBoss7.1.1 实现支持热部署
- recursive