批处理命令问题??我是新手

从C语言的题目中挑出来的题目给批处理新手做_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
从C语言的题目中挑出来的题目给批处理新手做
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:61.19KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【给新手的福利】新版测试用批处理文件_noip吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:13,816贴子:
【给新手的福利】新版测试用批处理文件收藏
·你还因为过去的批处理文件那个简陋的页面、需要手算的时间、不能识别ans格式和out格式而犯愁么?·你还因为Cena需要添加题目和选手感到麻烦么?
//不觉得麻烦的可以Alt F4了……本人高二准备退役……所以把这个文件发出来功能如下:1.自动获取文件组数,如果出现不连续但是序号相差不大的仍能保证被统计在数据总组数中,丢失一两个输入输出文件毫不影响测试。还会根据满分值算出每组的分数,有的点丢失怎么办?自动跳过!(该文件需和可执行文件、待测试文件放在同目录下)2.自动获取文件名,根据给出的可执行文件名判断输入输出文件,再也不需要在批处理里面改名字了。(由于有些人的编译程序不在同一个地方,所以暂不提供编译功能)3.自动获取文件后缀,ans?out?统统解决4.时间需要手算?这里已经帮你算好了→_→,精确到0.01s5.你还在为自己算分感到苦恼?程序自动累加分数和总时间6.不知道哪些点的结果?程序自动统计并显示WA AC RE TLE,如果是TLE的话,该测试点还是没有分的哦(现不能统计MLE,有相关知识的请联系我)7.如果程序长时间运行,我想关掉怎么办?你的程序会出现在任务栏里,手动关闭,并在批处理中输入N即可8.想统计提交情况?程序自动写入同目录下文件中,可随时查看提交情况9.不知道什么时候测完,一按回车还没等看就没了?测试到最后一组时,将给予明显的提示10.想对程序运行的结果进行整理?程序评测后按下1,即可查看总结果,每组用了多少秒?最大时间比率?正确组数?比率?错误组数、比率……你想有的,都可以有11.评测过程中随时可以查看过去每组情况,包含WA AC……等标志,以及该组时间用后求评论、反馈、批评,求赞
offecho.&get.txtfor %%i in (*.exe)do set name=%%~niif exist *.out (set na=out) else (set na=ans)title 此时测试程序名为 %name%set getget=1000set ov=0set now=0set ch=0set che=0set tot=0set p=0set oo=0set qq=0set acnum=0set renum=0set wanum=0set tlenum=0set max=0if exist %name%.in del %name%.inif exist %name%.out del %name%.outecho ***********************************************************************echo.echo
请输入测试点时限(ms为单位),不输入则默认1000msecho.echo ***********************************************************************set /p getget=clsset test=0:looset /a test+=1if exist %name%%test%.%na% (goto loo)set /a p=%test%+1if exist %name%%p%.%na% (set /a ov+=1)if exist %name%%p%.%na% (goto loo)set now=0set /a test-=1set totalnum=%test%:wwwwset /a now+=1if not %now%==%test% (color 2F) else (color 1F)if not %now% leq %test% goto endedcopy %name%%now%.in %name%.in &nulecho Problem Testecho.echo Data %now%set time1=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%if not exist %name%%now%.in (goto l4)start /wait /min %name%.exeif errorlevel 1 (goto fff)echo.set time2=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%set /a time3=%time2%-%time1%set /a pp=%time3%if %max% lss %pp% (set max=%pp%)set /a p=%time3%/100set /a time3=%time3%-%p%*100if %time3%==0 (echo 程序用时%p%秒) else (if %time3% lss 10 (echo 程序用时%p%.0%time3%秒) else (echo 程序用时%p%.%time3%秒))echo.fc %name%.out %name%%now%.%na%set /a ch=%test%-%ov%if errorlevel 0 (set /a che=%che%+100/%ch%)set /a wqwq=(%test%-1-%ov%)*%che%if %now%==%test% (if errorlevel 0 set /a che=100-%wqwq%)set /a pp*=10if %pp% gtr %getget% (set che=0)if errorlevel 1 (set che=0)set /a tot=%tot%+%che%echo 程序当前得分 %tot%set /a oo+=%p%set /a qq+=%time3%set /a wewe=%qq%/100set /a opop=%qq%-100*%wewe%set qq=%opop%set /a oo+=%wewe%echo 程序当前总用时 %oo%.%qq%秒if %pp% gtr %getget% (goto l1)if errorlevel 1 (goto l2)if errorlevel 0 (goto l3):looopif exist %name%.in (del %name%.in)if exist %name%.out (del %name%.out):looop1type get.txtecho.if %now%==%test% (echo 最后一组测试已经完成,按任意键继续)set che=0echo.pauseclsif (%now% leq %test%) (goto wwww)goto ended:l1if %time3%==0 (echo 第%now%组
Time Limit Exceeded
%p% seconds &&get.txt) else (if %time3% lss 10 (echo 第%now%组
Time Limit Exceeded
%p%.0%time3% seconds &&get.txt) else (echo 第%now%组
Time Limit Exceeded
%p%.%time3% seconds &&get.txt))set /a tlenum=%tlenum%+1goto looop:l2if %time3%==0 (echo 第%now%组
Wrong Answer
%p% seconds &&get.txt) else (if %time3% lss 10 (echo 第%now%组
Wrong Answer
%p%.0%time3% seconds &&get.txt) else (echo 第%now%组
Wrong Answer
%p%.%time3% seconds &&get.txt))set /a wanum=%wanum%+1goto looop:l3if %time3%==0 (echo 第%now%组
%p% seconds &&get.txt) else (if %time3% lss 10 (echo 第%now%组
%p%.0%time3% seconds &&get.txt) else (echo 第%now%组
%p%.%time3% seconds &&get.txt))set /a acnum=%acnum%+1goto looop:l4echo.echo 程序用时0.0秒echo.echo 正在比较文件 %name%.out 和 %name%%now%.%na%echo FC:测试文件不存在,该测试点分数将不计入总分echo.echo 程序当前得分 %tot%echo 程序当前总用时 %oo%.%qq%秒echo 第%now%组
File is not found
0 second &&get.txtset /a totalnum=%totalnum%-1goto looop1:fffclsecho Problem Testecho.echo Data %now%echo.echo 程序用时0.0秒echo.echo ———程序发生运行时错误,为提供错误信息,特重新运行本次程序,错误信息如下———%name%.exeecho FC:程序无法执行,不提供数据比对echo.echo 程序当前得分 %tot%echo 程序当前总用时 %oo%.%qq%秒echo 第%now%组
Runtime Error
0 second &&get.txtset /a renum=%renum%+1goto looop:endedecho.echo.echo.echo————【输入1可查看测试结果,按其他键退出】————set /p choice=输入框:echo.echo.echo.if %choice%==1 (goto 1212) else (goto qqqqqq):1212clsecho ————————测试结果显示————————echo.color 1Fecho (若出现暂停,请按任意键继续)echo.echo
你的程序统计结果如下:echo.echo
总得分:%tot%分echo.echo
总消耗时间:%oo%.%qq%秒echo.set /a max=%max%*10echo
最长消耗时间:%max%毫秒echo.set /a rate=%max%*100/%getget%echo
最长消耗时间比率:%rate%%echo.echo
总测试数据:%totalnum%组echo.pause&nulecho.echo
通过测试组数:%acnum%组set /a rate=%acnum%*100/%totalnum%echo.echo
通过测试数据比率:%rate%%echo.echo
答案错误组数:%wanum%组set /a rate=%wanum%*100/%totalnum%echo.echo
答案错误比率:%rate%%echo.pause&nulecho.echo
超出时间限制组数:%tlenum%组set /a rate=%tlenum%*100/%totalnum%echo.echo
超出时间限制比率:%rate%%echo.echo
运行时错误组数:%renum%组set /a rate=%renum%*100/%totalnum%echo.echo
运行时错误比率:%rate%%echo.echo ————【输入2可查看运行结果,按其他键退出】————set /p choice=输入框:if %choice%==2 (goto 1213) else (goto qqqqqq):1213clsecho.clsecho
————以下为程序运行结果————type get.txtecho. set /a oqoq=%oo%*1000+%qq%*10if %acnum%==%totalnum% (echo %date%
%time% 【Accept:100】
%oqoq% ms &&case.txt) else (echo %date%
【Fail to accept: %tot%】
%oqoq% ms&&case.txt)echo.&&case.txtecho ————【输入3可查看本题全部提交情况,按其他键退出】————set /p choice=输入框:if %choice%==3 (goto 1214) else (goto qqqqqq):1214clsecho.echo
**————以下为本题全部测试情况————***echo.echo.type case.txtecho ————【输入P可清空提交情况,按其他键退出】————set /p choice=输入框:if %choice%==P (del case.txt) else (goto qqqqqq)clsecho 已清空,请按任意键继续pause&nul:qqqqqqecho.clsecho ***********************************************************************echo.echo
如有不足之处,请发送邮件至指出,请按任意键退出echo.echo ***********************************************************************pause&nuldel get.txt&nul怎么保存大家应该都知道……
支持 目测精前
。。。这东西干嘛用批处理来写呀,,,我从来都直接拿c++来写。。。
都沉了……
好麻烦还是cpp写好
赞\(≥▽≤)/现在用不上
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或本人新手,请教一个set/p=的问题_批处理吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:6,220贴子:
本人新手,请教一个set/p=的问题收藏
@echo offset /p
n=请输入N:for /f "delims=" %%i in (1.txt) do (for /l %%j in (1 1 %n%) do set/p=%%i &nul echo.)pause请问这个代码里的set/p=%%i是什么意思啊,set /p 不是要设置成 set /p a=%%i吗,为什么他的什么都没有呢,还有后面的nul echo.是什么意思,谢啦,菜鸟学习中。。O(∩_∩)O~
我也懵住了
/p 这个参数本来是要用户输入一个值的,但是,后面有了&nul 就不用用户输入了,&nul的意思就是将一个空信息导入到 set /p 所以,这里就不用等待用于输入而停顿了,自动就输入了空信息,输入空信息的作用就是让1.txt里面的内容能够在同干一行显示,而不用换行显示。
顺便附带签名。。。。
for /f for /1是什么意思啊?
还有%%i 和%%j是代表i盘和j盘的意思么?
/f是for语句的一个参数,其作用就是对文本进行处理/l同理 就以你的这个例子进行讲解:for /f "delims=" %%i in (1.txt) do (for /l %%j in (1 1 %n%) do set/p=%%i &nul echo.)由于在/f参数中,系统默认为以空格表示分隔符,此时"delims="的作用就相当于取消分隔符,而%%i则相当于FOR语句的变量。那么这个FOR语句的含义就是把1.txt文档中的整个字符串(包括空格、回车等等)赋值给变量%%i,那么赋值操作之后再做什么呢,我们接着看DO命令中的语句,而此时他在DO命令中又嵌套了一个循环。/l也是FOR循环的参数,而%%j也是嵌套FOR循环中的变量。系统约定,变量名之间是承上启下的关系,什么意思呢?举个简单的例子,假如你的外部FOR循环中变量是%%a,那么下面FOR循环中的变量就定义成%%b。而%n%则是你所输入的值,因此整个语句的意思就是执行n次循环,执行n次循环做什么?再看其后的DO命令。set/p=%%i &nul echo.set/p &nul的作用如楼上所述,我这里不再进行讲解。那么为什么set/p=之后要加的变量是%%i而不是%%j呢?这是因为%%j参数表示的是循环的次数,而%%i则表示文本中的字符串,你要把文本中指定的字符串按照你所要求的次数显示出来,那么只能用代表文本字符变量的%%i。而由于后面又加了echo.这个语句,其实就是把文本内容和这个"echo."语句衔接起来作为一个整体进行显示。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 批处理命令 的文章

 

随机推荐