中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理 if 嵌套问题 上一主题 | 下一主题
msjsp
新手上路





积分 2
发帖 2
注册 2008-12-2
状态 离线
『楼 主』:  批处理 if 嵌套问题

我写了一个编译并运行JAVA的批处理程序(JAVA环境变量已注册),我想实现的效果是:
格式: 批处理 JAVA源文件名
然后开始编译,若失败,用记事本打开让用户修改,若编译成功,则询问用户该程序是否带参数运行(以A/B表示),然后跳入指定段运行,最后退出。
但是为什么在实际运行的时候 CMD提示说    此时不应有goto  ?
应该怎么样写才能实现上述效果呢?请高手指点~~

批处理内容如下:


@echo off
cls
color 0a
title JAVA编译实用工具-汉化版
echo                **********JAVA编译实用工具************
echo.
echo wscript.sleep 2 >%windir%\delay.vbs
echo                          -^>正在编译....%1.java
javac .\%1.java
if errorlevel 1 (
echo                           -^>编译失败!
echo.
echo                    -^>请按任意键修改错误的JAVA源程序!
pause >nul
notepad .\%1.java
goto end
)
if errorlevel 0 (
echo.
echo                          -^>编译成功!
echo.
set /p="本程序是否带参数运行(A/B)?   " <nul
set /p pon=
if %pon%==A goto Para
if %pon%==B goto Nopara
echo                          -^>正在运行...
:Para
echo.
echo -^>创建测试文件...Record.dat
echo >.\Record.dat
echo -^>成功!
echo.
echo                *************输出视图**************
%windir%\delay.vbs
echo.
echo                     ======参数缺少异常======
echo                          -^>输入参数为 Record.dat
%windir%\delay.vbs
echo.
java %1 Record.dat
%windir%\delay.vbs
echo.
goto end
:Nopara
echo                *************输出视图**************
%windir%\delay.vbs
echo.
echo                     ======参数缺少异常======
echo                          -^>输入参数为空
%windir%\delay.vbs
echo.
java %1
if errorlevel 1 (
echo 发生了异常!
goto final
)
%windir%\delay.vbs
echo.
goto end
)
del %windir%\delay.vbs /f /q
:final
echo                                                               CopyRight(c)2008
echo                                                          409 Media Corporation
set /p="                成功完成所有任务,是否进行扫尾处理(Y/N)?" <nul
set /p ans=
if %ans%==Y goto Yes
if %ans%==N goto No
if %ans%==A goto Para
:Yes
del .\Record.dat /f /q
::del .\%1.java /f /q
del .\%1.class /f /q
echo -^>扫尾工作完成,按任意键退出...
goto end
:No
echo                    按任意键退出...
goto end
:end
pause >nul

2008-12-4 15:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 2 楼』:  

在比较的时候,变量有可能是是空值,那么实际比较时就成了这样:
if ==end goto xxx

这个时候就会提示“此时不应有”了,微软最垃圾的cmd设置,不管什么错误都是此时不应有

比较字串附加个字母或者用引号引起来吧

2008-12-4 16:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: