中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-01 01:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for语句判断ftp登陆信息的问题 查看 889 回复 9
楼 主 for语句判断ftp登陆信息的问题 发表于 2007-04-13 00:06 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
ftp -s:denglu.txt>ftp.log
我把ftp登陆和操作信息保存到ftp.log下
然后为了判断时候在操作中出现有未下载文件错误用以下for语句
set warning=550 1234.txt: No such file or directory.
for /f "delims=" %%i in (ftp.log) do if %%i=%warning% echo fail
可是当ftp.log出现550 1234.txt: No such file or directory.一行时,for语句不能正确判断,不知是什么原因,望指点.
2 发表于 2007-04-13 00:20 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
set "warning=550 1234.txt: No such file or directory."
for /f "delims=" %%i in (ftp.log) do if "%%i"=="%warning%" echo fail
3 发表于 2007-04-13 00:21 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
出现问题的主要原因是 if 判断 字符串是否相等 时 应该用==而不是=
4 发表于 2007-04-13 00:37 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
bjsh兄那个少个"="是我笔误,但是它判断到200 PORT command successful.
也还是正确的 if 200 PORT command successful.==550 1234.txt: No such file or directory. echo fail

但是判断到这句的时候550 1234.txt: No such file or directory的时候就出问题了.
"=="550 1234.txt: No such file or directory." echo fail ch file or dircetory.
感觉是把后面的550 1234.txt: No such file or directory信息挤掉了,而且之前也没做判断,不知道什么原因.
5 发表于 2007-04-13 00:48 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
你按照我写的把引号全都加上试一下;看能否成功;

我估计是因为有些地方不加引号的话;

比如 set warning=

很有可能最后会多出几个空格;

我平时用的时候也不少出现这种情况;

所以现在以已经习惯了

set "warning="

if ""==""

你都打上引号试一下
6 发表于 2007-04-13 01:26 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
都打上了 也没解决问题.
我单独弄个简单文本实验ftp.log里内容为12
bat文件
set "a=12"
for /f "delims=" %%i in (ftp.log) do if "%%i"=="%a%" echo fail也不行
难道是for语句后面do command跟if语句有问题?不知道应该是这样的格式~~~
7 发表于 2007-04-13 02:16 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
我的bat内容是这样的


  1. @echo off
  2. set "warning=550 1234.txt: No such file or directory."
  3. for /f "delims=" %%i in (1.txt) do if "%%i"=="%warning%" echo fail && pause
BJSH发表于: 2007-04-12 13:04

其中所测试的1.txt内容是这样的


  1. 550 1234.txt: No such file or directory.
BJSH发表于: 2007-04-12 13:05


回显是这样的:


  1. C:\>1
  2. fail
  3. 请按任意键继续. . .
BJSH发表于: 2007-04-12 13:05


正确执行啊.不是吗??
8 发表于 2007-04-13 02:19 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
为十么非要用 for

findstr "^550" .log &&(echo fail)

不是更好?
9 发表于 2007-04-13 03:20 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
原因终于被我找出来了ftp登陆信息导出的问本在某些句后会有结束符,类似"□"在我那句出错的语句后就有这个符号的出现,
550 1234.txt: No such file or directory.□
在editplus下可以看到,现在的问题就是怎么让导出无结束符,或者怎么用参数去除,delims只替换回车和空格?
10 发表于 2007-04-13 03:28 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
vkill兄的findstr很好 谢谢
论坛跳转: