中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 08:59
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 帮忙解释删除重复行代码的意思?
可打印版本  766 / 8
第1楼 aiqian2008 发表于 2008-11-09 01:29
初级用户 发帖 22 积分 35
帮忙解释删除重复行代码的意思?
源代码:
--------------------------------------------------------------------
@echo off
:: 删除重复的行,但不能保留空行
:: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理
:: code by youxi01 modified by jm 2006-10-31
(echo 清除重复行后的文件内容:& echo.)>str_.txt
for /f "delims=" %%i in (test.txt) do (
if not defined %%i set %%i=A & echo %%i>>str_.txt)
-------------------------------------------------------------------

我一直理解不了最后一句“if not defined %%i set %%i=A & echo %%i>>str_.txt”的意思,哪位帮忙解释一下?
第2楼 HAT 发表于 2008-11-09 01:48
版主 发帖 5,017 积分 9,023
这样能否理解?
第3楼 aiqian2008 发表于 2008-11-09 02:29
初级用户 发帖 22 积分 35
还是不明白意思?
defined应该是定义的意思吧
没有设延迟变量,为什么还要设set %%i=A
设set %%i=A有什么用意?
第4楼 8657 发表于 2008-11-09 02:48
初级用户 发帖 17 积分 20
defined 就是用它来判断重复行的 但
set %%i=A 什么意思??请楼主明讲
谢谢
第5楼 lserfn 发表于 2008-11-09 02:51
初级用户 发帖 49 积分 97
没有开延迟变量
第6楼 aiqian2008 发表于 2008-11-09 02:58
初级用户 发帖 22 积分 35
回4楼
是别人的源码,我也不知道set %%i=A 什么意思??
第7楼 pusofalse 发表于 2008-11-09 05:35
银牌会员 发帖 646 积分 1,604
set var=A你知道什么意思,为何set %%i=A就不知道了?、、、
只不过这里的var改成用%%i代替而已。。。
第8楼 8657 发表于 2008-11-09 05:55
初级用户 发帖 17 积分 20
恩 谢谢解释 明白了 但是 这样什么作用?
第9楼 pusofalse 发表于 2008-11-09 06:17
银牌会员 发帖 646 积分 1,604
某个文件中的内容如下:

会循环4次,因为有4行(for是按行来读取的)。
第一次循环set %%i=a,执行的是set var1=a,并把%%i的值var1打印出来。第二次循环,%%i的值还是var1,var1在第一次时已经被定义过了,所以此次什么也不输出。往下的流程同是。。。
你把顶楼的代码的@echo off去掉,在CMD中运行,仔细观察其过程就能明白了。。。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023