中国DOS联盟论坛

中国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