标题: [文本处理] [已解决]批处理for命令中in部分的问题 [打印本页]
作者: lonron 时间: 2023-4-27 23:35 标题: [已解决]批处理for命令中in部分的问题
不是很明白for命令的执行过程,所以一直有一个疑问,想请问各位老师,例如:- 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
- @echo off
- for /f "eol=# tokens=2 delims== " %%x in ('type "test.ini" ^| find /i "xxx"') do (
- del "test.ini"
- echo %%x
- )
- pause
复制代码
测试一下就知道了
作者: lonron 时间: 2023-4-27 23:56
回复 2# 77七 - 1
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 2
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 3
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 4
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 5
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 6
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 7
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 8
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 9
- 找不到 C:\Users\Lonron\Desktop\test.ini
- 0
复制代码
意思是in只执行一次,然后依次得出十行结果?
作者: 77七 时间: 2023-4-28 00:17
回复 3# lonron
太复杂了,我也在学习中,注意下这两种区别- @echo off
- cd.>1.txt
- cd.>2.txt
- for %%a in (*.txt) do (
- echo %%a
- del 2.txt
- )
- pause
复制代码
- @echo off
- cd.>1.txt
- cd.>2.txt
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- echo %%a
- del 2.txt
- )
- 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 |