[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 当for中的["options"] 为变量时,该如何使用?

本帖最后由 pcl_test 于 2017-3-29 21:18 编辑

小弟希望能写个查找批处理当查找某字串后
显示含有某字串的下一行内容
例如   123.txt
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
复制代码
查找 3后 显示出4
查找 2后 显示出3
查找 5后 显示空值

以下式小弟代码
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. echo Search for What String ?
  4. set /p "str="
  5. echo.
  6. for /f "tokens=1-2 delims= " %%a in ('f 123.txt /f:"%str%" -s -o:Ftl') do (
  7. for /f "skip=%%b delims=" %%c in ('type "%%a"') do (
  8. echo %%c
  9. goto :outloop
  10.   )
  11. )
  12. :outloop
  13. pause
复制代码
在 skip=%%b 这里错误,他说不能这样用...


ps.本程序中使用了一个名为f.exe 的第3方搜索软件
  1. f 123.txt /f:"%str%" -s -o:Ftl
复制代码
将会输出 ∶ 查找符合完整路径档案名称 {tab} 字串所在行数

看来是 for 里面又有for
就不能让["options"]使用变数

可是小弟目前想完成的脚本
目的是从 一个目录包含子目录和当中所有文件
寻找某字串后 并输出下一行...
然后集中输出到一个文件里

我想这样说应该很多人不懂我的意思吧.....

因为这个我目前只能想到用2个for完成
试试看能不能用call 把for跳出来执行

等等在试试看

不过还是感谢楼上大大的解答

[ 本帖最后由 strong12345 于 2009-7-25 16:14 编辑 ]

TOP

  1. @echo off
  2. echo Search for What String ?
  3. set /p "str="
  4. echo.
  5. for /f "delims=:" %%a in ('findstr /in "%str%" 123.txt') do set n=%%a
  6. if defined n (
  7.    for /f "skip=%n% usebackq delims=" %%c in ("123.txt") do set "v=%%c"&goto :outloop
  8. ) else echo 搜索失败
  9. :outloop
  10. if defined v (echo %v%)else echo "空"
  11. pause
复制代码

TOP

返回列表