标题: [已结案]连续两次嵌套for执行错误
[打印本页]
作者: wangyc
时间: 2010-3-25 22:18
标题: [已结案]连续两次嵌套for执行错误
@echo off
for /f %%i in ('dir *.exe /b') do (
for /f %%a in ('echo %%i^|findstr /i "ms"') do (
for /f "delims=- tokens=2" %%1 in ("%%a") do echo %%1
)
for /f %%b in ('echo %%i^|findstr /i "ps"') do (
for /f "delims=- tokens=2" %%2 in ('echo %%b^|findstr /i "-V"') do echo %%2
for /f "delims=- tokens=3" %%3 in ('echo %%b^|findstr /i /v "-v"') do echo %%3
)
)
上面的例子,最下边的两个for在执行的时候都提示错误,不知道处于这里的for语句应该注意哪些细节的问题?
[
Last edited by wangyc on 2010-3-26 at 14:39 ]
作者: slore
时间: 2010-3-25 22:51
dir *.exe /b>exelst.txt
你最好给出列表
作者: lovelymorning
时间: 2010-3-25 22:52
findstr /i "-V"'
findstr 后面那个东西。。 -V 。。。。会被解析成 findstr 的一个参数。。。
也就变成 findstr 有两个参数,一个是 /i 一个是 -v。。。。。。但少了一个参数。。就是 findstr 的内容是什么。。。没这个参数,所以就报错了。。。
- 是一个特殊符号。。。至少,在findstr这里算做是。。。如果真要找这个内容,必须使用 \ 来转义。。让 - 变成一个普通的字符才行
findstr /i "\-V" 这样才是正确的。。。。
作者: wangyc
时间: 2010-3-25 23:03
确实是这个问题,findstr /i "\-V"就没有问题
在此谢谢楼上的两位
作者: pdanniel66
时间: 2010-3-26 06:13
(1) LZ可否贴出最后正确所有完整语法 ?
(2) 若问题已解决,标题注明[已结案]
作者: wangyc
时间: 2010-3-26 14:41
楼上提醒的是,下面是正确的代码:
@echo off
for /f %%i in ('dir *.exe /b') do (
for /f %%a in ('echo %%i^|findstr /i "ms"') do (
for /f "delims=- tokens=2" %%1 in ("%%a") do echo %%1
)
for /f %%b in ('echo %%i^|findstr /i "ps"') do (
for /f "delims=- tokens=2" %%2 in ('echo %%b^|findstr /i "\-V"') do echo %%2
for /f "delims=- tokens=3" %%3 in ('echo %%b^|findstr /i /v "\-v"') do echo %%3
)
)
作者: Hanyeguxing
时间: 2010-3-26 15:07
尽量少使用过多的for嵌套,以你的批处理,可以发挥findstr的表达式查找功能,例如查找XPSX-X-VX(X代表若干任意字符),可以直接写成findstr /i ".*ps.*\-.*\-V.*",不需要多此解析多次使用findstr。