中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for语句判断ftp登陆信息的问题
作者:
标题: for语句判断ftp登陆信息的问题 上一主题 | 下一主题
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『楼 主』:  for语句判断ftp登陆信息的问题

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语句不能正确判断,不知是什么原因,望指点.

2007-4-13 00:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 2 楼』:  

set "warning=550 1234.txt: No such file or directory."
for /f "delims=" %%i in (ftp.log) do if "%%i"=="%warning%" echo fail

2007-4-13 00:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 3 楼』:  

出现问题的主要原因是 if 判断 字符串是否相等 时 应该用==而不是=

2007-4-13 00:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 4 楼』:  

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信息挤掉了,而且之前也没做判断,不知道什么原因.

2007-4-13 00:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 5 楼』:  

你按照我写的把引号全都加上试一下;看能否成功;

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

比如 set warning=

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

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

所以现在以已经习惯了

set "warning="

if ""==""

你都打上引号试一下

2007-4-13 00:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 6 楼』:  

都打上了 也没解决问题.
我单独弄个简单文本实验ftp.log里内容为12
bat文件
set "a=12"
for /f "delims=" %%i in (ftp.log) do if "%%i"=="%a%" echo fail也不行
难道是for语句后面do command跟if语句有问题?不知道应该是这样的格式~~~

2007-4-13 01:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 7 楼』:  

我的bat内容是这样的

  Quote:

  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内容是这样的

  Quote:

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

回显是这样的:

  Quote:

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

正确执行啊.不是吗??

2007-4-13 02:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 8 楼』:  

为十么非要用 for

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

不是更好?

2007-4-13 02:19
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 9 楼』:  

原因终于被我找出来了ftp登陆信息导出的问本在某些句后会有结束符,类似"□"在我那句出错的语句后就有这个符号的出现,
550 1234.txt: No such file or directory.□
在editplus下可以看到,现在的问题就是怎么让导出无结束符,或者怎么用参数去除,delims只替换回车和空格?

2007-4-13 03:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 10 楼』:  

vkill兄的findstr很好 谢谢

2007-4-13 03:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: