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

[文本处理] [已解决]批处理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部分的命令是每次循环都会执行一次;还是说只会执行一次,然后在循环体内把十行结果分十次依次得出?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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
复制代码
测试一下就知道了
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 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只执行一次,然后依次得出十行结果?

TOP

回复 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
复制代码
bat小白,请多指教!谢谢!

TOP

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

回复 4# 77七


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

TOP

返回列表