大家好!
今天看了下面一段代码,用来删除文本中重复的行,其中“if not ... ”那一句话不是很理解,请求高手帮忙解释一下,谢谢。
@echo off :: 删除重复的行,但不能保留空行 :: 对不符合变量命名规则、变量个数超过限制的文本都无法正确处理 :: (echo 清除重复行后的文件内容:& echo.)>str_.txt for /f "delims=" %%i in (test.txt) do ( if not defined %%i set %%i=A & echo %%i>>str_.txt) start 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 ...
如果没有定义变量%%i,则...
当没有重复内容时,执行set %%i=A(定义变量)和echo %%i(输出内容)
当重复时,因为%%i被定义,所以set %%i=A和echo %%i不被执行。
参考语法 if [not] definedvariablecommand [elseexpression]
也可以写成
@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%i in (test.txt) do if not "!%%i!"=="A" set %%i=A&echo %%i)>str_.txt
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-21 11:03 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)
原帖由 hanyeguxing 于 2010-5-18 12:58 发表
@echo off
(for /f "delims=" %%i in (test.txt) do (if not defined %%i set %%i=A&echo %%i)>str_.txtif not defined %%i ...
如果没有定义变量%%i,则...
当没有重复内容时,执行set %%i=A(定义变量)和echo ...