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

批处理文件for循环中echo命令为何总是处于关闭状态?

我是一个菜鸟,首次在论坛发帖,有个难题困扰着我好几天了,一直没有搞懂是哪里的问题,想请给位大虾前辈们给看下.
废话少说,直接上码:

1.txt:

第1题<'要求有电路图'  >阐述收音机的原理
第2题<'不得引用教材案例'  >设计一个电饭锅的简易电路图


批处理代码:
  1. @echo off
  2. :main
  3. set /p a=请输入数字
  4. if %a%==1 (goto :canshu) else (goto :eof)
  5. :canshu
  6. for /f "delims=' tokens=1,2" %%i in (' findstr /i "第*.*题" "1.txt" ')
  7. do ( call :mm %%i %%j  )
  8. goto :main
  9. :mm
  10. @echo off
  11. echo %1
  12. echo %2
  13. pause
  14. ::代码结束
复制代码
要求:1 for的结构不能去掉
       2 call 的结构不能去掉

求各位高手们指点,小弟不胜感谢!!!

本帖最后由 ivor 于 2012-1-12 22:34 编辑

不太理解你你的代码想干什么
  1. findstr /i "第*.*题" 1.txt   
复制代码
这句提取的是全部文本,那你干脆直接导入文本就行了,为什么还要findstr
  1. call :mm %%i %%j
复制代码
只是要输出内容,为什么还要调用

参数%%j 不能被传递,关键是 %%i里面的“<” 重定向符号

TOP

我主要是想研究for和call的搭配使用问题,本段代码没有什么作用.
那假如我想在1.txt里提取的是第某题,该如何改写呢?
另外就是我不明白为什么echo总是关闭.想找个改变的方法,可能是我有点钻牛角尖了吧,呵呵

TOP

本帖最后由 ivor 于 2012-1-12 22:52 编辑

回复 3# jjddd001

稍微改了一下
  1. @echo off
  2. :main
  3. set /p a=请选择第几题(1,2)
  4. for /f "tokens=1,2" %%i in (' findstr /i "第%a%题" 1.txt') do (
  5. for /f "delims=< tokens=1,2" %%a in ("%%i") do (
  6. call :mm %%a %%b
  7. )
  8. )
  9. goto main
  10. :mm
  11. @echo off
  12. echo %1
  13. echo %2
  14. ::代码结束
复制代码
Q:另外就是我不明白为什么echo总是关闭?

A:%2是空值,so …………

TOP

  1. @echo off
  2. :main
  3. set /p a=请选择第几题(1,2)
  4. for /f "tokens=1,2" %%i in (' findstr /i "第%a%题" 1.txt') do (
  5.     for /f "delims=< tokens=1,2" %%a in ("%%i") do (
  6.         call :mm %%a %%b
  7.     )
  8. )
  9. goto :main
  10. :mm
  11. echo,%1
  12. echo,%2
复制代码

TOP

返回列表