中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 10:59
楼 主 IF判断文件存不存在问题 发表于 2009-01-05 23:24 ·  中国 河南 南阳 联通
新手上路
积分 10
发帖 10
注册 2008-12-12 23:50
UID 133697
性别 男
状态 离线
FOR /F "eol=# " %%i in (D:\dir.txt) do (
echo %%i
call :lp "%%i"
)
pause

:lp
IF EXIST %1 (
IF %~z1 GTR 0 (
echo %~nx1 %~z1 大于 0
) ELSE (
echo %~nx1 %~z1 不大于 0
)
) ELSE (
echo %~nx1 文件不存在
)
GOTO :EOF

如果文件不存在的话,就会报错。如何才能实现如果文件存在就判断文件大小,不存在就写日志???
2 发表于 2009-01-06 01:10 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
因为如果文件不存在的话,这句:

IF %~z1 GTR 0

就变成了:

IF GTR 0

就导致出错。

---------------------------------------
解决办法是,加上双引号:

IF "%~z1" GTR "0"

或者先判断不存在:

@echo off
FOR /F "eol=# delims=" %%i in (D:\dir.txt) do (
echo %%i
call :lp "%%i"
)
pause

:lp
IF not EXIST %1 (
echo %~nx1 文件不存在
GOTO :EOF
)


IF %~z1 GTR 0 (
echo %~nx1 %~z1 大于 0
) ELSE (
echo %~nx1 %~z1 不大于 0
)
GOTO :EOF

(如果路径有空格话,还应加上 delims=
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
5721617 +1 2009-01-06 23:13
3 发表于 2009-01-06 02:22 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
UID 73203
性别 男
状态 离线
看见 for 就晕, 逃跑......
4 发表于 2009-05-07 00:04 ·  中国 广东 深圳 电信
初级用户
开心小子
积分 59
发帖 29
注册 2009-05-06 01:28
UID 144451
性别 男
来自 广东
状态 离线
FOR IF DEBUG FTP SET

貌似着几个命令相当的....
功能也是相当的强大...
开心最好!
快乐你我!
5 发表于 2009-05-07 02:13 ·  中国 广东 东莞 电信
新手上路
四眼
积分 13
发帖 8
注册 2009-05-04 09:12
UID 144370
性别 男
状态 离线
路过,学习中。。。
从DOS开始
论坛跳转: