Board logo

标题: [文本处理] [已解决]批处理for命令中in部分的问题 [打印本页]

作者: lonron    时间: 2023-4-27 23:35     标题: [已解决]批处理for命令中in部分的问题

不是很明白for命令的执行过程,所以一直有一个疑问,想请问各位老师,例如:
  1. for /f "eol=# tokens=2 delims== " %%x in ('type "test.ini" ^| find /i "xxx"') do (echo %%x)
复制代码
假设test.ini初始有10行数据,每次循环体内会得出一个%x。那么in部分的命令是每次循环都会执行一次;还是说只会执行一次,然后在循环体内把十行结果分十次依次得出?
作者: 77七    时间: 2023-4-27 23:49

  1. @echo off
  2. for /f "eol=# tokens=2 delims== " %%x in ('type "test.ini" ^| find /i "xxx"') do (
  3. del "test.ini"
  4. echo %%x
  5. )
  6. pause
复制代码
测试一下就知道了
作者: lonron    时间: 2023-4-27 23:56

回复 2# 77七
  1. 1
  2. 找不到 C:\Users\Lonron\Desktop\test.ini
  3. 2
  4. 找不到 C:\Users\Lonron\Desktop\test.ini
  5. 3
  6. 找不到 C:\Users\Lonron\Desktop\test.ini
  7. 4
  8. 找不到 C:\Users\Lonron\Desktop\test.ini
  9. 5
  10. 找不到 C:\Users\Lonron\Desktop\test.ini
  11. 6
  12. 找不到 C:\Users\Lonron\Desktop\test.ini
  13. 7
  14. 找不到 C:\Users\Lonron\Desktop\test.ini
  15. 8
  16. 找不到 C:\Users\Lonron\Desktop\test.ini
  17. 9
  18. 找不到 C:\Users\Lonron\Desktop\test.ini
  19. 0
复制代码
意思是in只执行一次,然后依次得出十行结果?
作者: 77七    时间: 2023-4-28 00:17

回复 3# lonron


   太复杂了,我也在学习中,注意下这两种区别
  1. @echo off
  2. cd.>1.txt
  3. cd.>2.txt
  4. for %%a in (*.txt) do (
  5. echo %%a
  6. del 2.txt
  7. )
  8. pause
复制代码

  1. @echo off
  2. cd.>1.txt
  3. cd.>2.txt
  4. for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
  5. echo %%a
  6. del 2.txt
  7. )
  8. pause
复制代码

作者: lonron    时间: 2023-4-28 00:41

本帖最后由 lonron 于 2023-4-28 00:54 编辑

回复 4# 77七


    我只想知道开启 /f 开关时候是否是只读一次,我在您给的代码运行之后得出的结果似乎是表明in内的命令或者文本只会读取一次,就算删了也能继续循环,应该就表示确实是这样的吧?
因为我在实际应用中发现一个问题,就是当使用curl -i的时候,由于某些网站可能设置了延迟机制什么的,如果频繁抓取信息会出现 错误503,所以我不得不加了个timeout以作延迟。
但是如果in内只会在最开始读取一次,那我在里面写curl -i的时候就不用担心会出现因为循环而导致高频率抓取网站信息,使之得到错误503的情况了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2