[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. (
  3. echo [汉语8级考试]哪些符合汉语语法()
  4. echo A.测试一天
  5. echo B.测一天试
  6. echo C.考试一天
  7. echo D.考一天试
  8. echo 测
  9. )>test.txt
  10. ::显示 test.txt 中含有“测试”的行
  11. ::纯 for 方案,某些情况下是比较好的选择
  12. for /f "delims=" %%a in (test.txt) do (
  13.     for /f "delims=试" %%b in ("[%%a]") do (
  14.         for /f "eol=] tokens=2 delims=测" %%c in ("[%%b]") do echo %%a
  15.     )
  16. )
  17. pause
复制代码
这个会误判,需要完善。(此法是否可行?)
1

评分人数

    • CrLf: 感谢测试!技术 + 1

TOP

楼上的代码没啥新意吧。
唯一让我留意到的是
行首的“)空格”可以起到注释作用(空格可以为其他有效分隔符)
  1. @echo off
  2. ) echo aaa
  3. );echo aaa
  4. echo bbb
  5. pause
复制代码

TOP

@echo off
for /f "delims=" %%a in (
file1
file2
file3
) do echo [%%a] xxx
rem 如果某个文件找不到,不再遍历后面的文件。
pause

for /f "delims=" %%a in (
"
aaa
bbb
"
) do echo [%%a] xxx
echo 111&pause

for /f "delims=" %%a in (
'
echo aaa
echo bbb
echo ccc
'
) do echo [%%a] xxx
echo 222&pause

多行模式中,换行被预处理成了空格。
蓝色的单双引号位置可以随意,但红色的双引号与反括号不能在一行。

TOP

本帖最后由 powerbat 于 2012-3-17 23:19 编辑
@echo off
for /f "delims=" %%a in (
"
aaa
bbb
"
) do echo [%%a] xxx
echo 111&pause

for /f "delims=" %%a in ("
aaa
pause
") do echo [%%a] xxx
"
) do echo [%%a] xxx
pause
echo 222&pause


去掉echo off,可以看到预处理后变成了for /F "delims=" %a in (" aaa pause ") do echo [%a] xxx ") do echo [%a] xxx

当"与反括号在同一行时,for以为这是字符串的一部分,在后面如果找不到for语句的逻辑组成部分“) do ”,就会报错。

TOP

回复 21# lllsoslll


    17楼的代码在win7中运行正常。

TOP

返回列表