标题: 帮忙解释删除重复行代码的意思?
[打印本页]
作者: aiqian2008
时间: 2008-11-9 01:29
标题: 帮忙解释删除重复行代码的意思?
源代码:
--------------------------------------------------------------------
@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”的意思,哪位帮忙解释一下?
作者: HAT
时间: 2008-11-9 01:48
这样能否理解?
if not defined %%i (
set %%i=A
echo %%i>>str_.txt
)
作者: aiqian2008
时间: 2008-11-9 02:29
标题: 还是不明白意思?
defined应该是定义的意思吧
没有设延迟变量,为什么还要设set %%i=A
设set %%i=A有什么用意?
作者: 8657
时间: 2008-11-9 02:48
defined 就是用它来判断重复行的 但
set %%i=A 什么意思??请楼主明讲
谢谢
作者: lserfn
时间: 2008-11-9 02:51
没有开延迟变量
作者: aiqian2008
时间: 2008-11-9 02:58
标题: 回4楼
是别人的源码,我也不知道set %%i=A 什么意思??
作者: pusofalse
时间: 2008-11-9 05:35
set var=A你知道什么意思,为何set %%i=A就不知道了?、、、
只不过这里的var改成用%%i代替而已。。。
作者: 8657
时间: 2008-11-9 05:55
恩 谢谢解释 明白了 但是 这样什么作用?
作者: pusofalse
时间: 2008-11-9 06:17
某个文件中的内容如下:
var1
var1
var2
var2
会循环4次,因为有4行(for是按行来读取的)。
第一次循环set %%i=a,执行的是set var1=a,并把%%i的值var1打印出来。第二次循环,%%i的值还是var1,var1在第一次时已经被定义过了,所以此次什么也不输出。往下的流程同是。。。
你把顶楼的代码的@echo off去掉,在CMD中运行,仔细观察其过程就能明白了。。。