本帖最后由 lta3015 于 2011-6-7 10:09 编辑
各位好!
今天在尝试使用for语句时,发现两种实现形式输出差别很大,
求高手解释,
多谢~~~
代码1:- @echo off
- setlocal enabledelayedexpansion
-
- set DEVICE=EP3SE80
- type 1.txt | for /f "tokens=2" %%a in ('findstr "EP[0-9]S*" ') do (
- if %%a == %DEVICE% (
- set device_name=%%a
- echo !device_name!
- goto :FOUND
- )
- )
-
- echo NOT OK
- goto :P_END
-
- :FOUND
- echo OK
-
- :P_END
- pause
复制代码 运行结果(错误):
(if EP3SE80 == EP3SE80 ( set device_name=EP3SE80 & echo !device_name! & goto :FOUND
) )
!device_name!
NOT OK
代码2与代码1唯一区别:- for /f "tokens=2" %%a in ('findstr "EP[0-9]S*" 1.txt')
复制代码 运行结果(正确):
EP3SE80
OK
1.txt里面的内容:
124 254 36SD
ASD EP3SE80 1SAD
CDDF SF4 ASF
我的问题:
1.两种代码的执行方式的差别在哪里呢?为什么代码1明明能够正确获取指定字符串,可是判断语句无法正确执行?
2.为什么代码1执行后回显示命令语句呢,我已经在代码初始位置处设置了@echo off?如何避免回显?
3.如何采用代码1的方式得到代码2的执行结果?
|