![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 08:12 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 一个if语句使用中的问题,请教! |
| 可打印版本 852 / 4 |
| 第1楼 OverThere | 发表于 2007-11-02 20:31 |
| 新手上路 发帖 3 积分 7 | |
|
一个if语句使用中的问题,请教! 为什么我的程序如果运行到第一个if如果条件为真的时候,总是有The syntax of the command is incorrect.这样的错误
echo Input a file: set/p INPUTFILE= if /i "%INPUTFILE%"=="" ( echo 111111111111 set INPUTFILE=Document.txt goto :END ) else ( echo 222222222222222 if /i not exist %INPUTFILE% ( echo 333333333333 set INPUTFILE=Document.txt goto :END ) ) :BEGIN echo ################# goto :EOF :END set INPUTFILE= echo @@@@@@@@@@@@@@@@@@ |
|
| 第2楼 picat | 发表于 2007-11-02 21:42 |
| 初级用户 发帖 68 积分 150 | |
|
以下是XP自带的帮助信息,自己也没怎么在意过,一起学习吧。
ELSE 子句必须在 IF 之后出现在同一行上。例如: IF EXIST filename. ( del filename. ) ELSE ( echo filename. missing. ) 因为 del 命令需要用一个新行终止,以下子句不会有效: IF EXIST filename. del filename. ELSE echo filename. missing 由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也 不会有效: IF EXIST filename. del filename. ELSE echo filename. missing 如果都放在同一行上,以下子句有效: IF EXIST filename. (del filename.) ELSE echo filename. missing |
|
| 第3楼 picat | 发表于 2007-11-02 22:01 |
| 初级用户 发帖 68 积分 150 | |
|
搞错了,LZ的问题在于变量没有延迟,改成如下即可:
setlocal enabledelayedexpansion echo Input a file: set/p INPUTFILE= if /i "!INPUTFILE!"=="" ( echo 111111111111 set INPUTFILE=Document.txt goto :END ) else ( echo 222222222222222 if not exist !INPUTFILE! ( echo 333333333333 set INPUTFILE=Document.txt goto :END ) ) :BEGIN echo ################# goto :EOF :END set INPUTFILE= echo @@@@@@@@@@@@@@@@@@ lz可以搜索一下关于变量延迟的帖子,够你学习一阵子了。 |
|
| 第4楼 dikex | 发表于 2007-11-02 22:05 |
| 高级用户 发帖 366 积分 788 | |
|
问题出在else分句的%INPUTFILE%上面,谨记批处理的%%这些变量是会在整个命令执行前就进行替换,之后才执行(开启变量延迟后的!!变量则不同);
而当提示输入时你按了回车,%INPUTFILE%为空,系统执行时变成了 if /i not exist ( 这样就出现语法错误了,在两旁加上双引号之类的就可以了; 另外if exist可以不用加/i参数 [ Last edited by dikex on 2007-11-2 at 10:09 PM ] |
|
| 第5楼 OverThere | 发表于 2007-11-02 22:49 |
| 新手上路 发帖 3 积分 7 | |
|
太感谢3#,4#了,哈哈,一语惊醒梦中人啊!回3#的,我看了一遍就明白了哈!
[ Last edited by OverThere on 2007-11-3 at 01:52 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |