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

[其他] [已解决]解释批处理for语句的各种用法

FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["options"] %%i IN ('command') DO command  都有点不懂 呵呵  特别是 FOR /F [ options ] %%i IN ('command') DO command   中的'command'  还有单引号   顺便举些例子吧  在线等呢  谢谢 啊   对了还有for/d  我看了很 多贴  说的不明白  最好有例子
1

评分人数

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

这里的转义的作用应当是声明“|”的作用范围是在一组单引号之间,而不是将“|”转为普通字符。

TOP

本帖最后由 GNGW 于 2024-3-20 10:53 编辑

回复 18# pusofalse


    我还是不明白,为什么要转义?转义的作用是将|转为普通字符吗?以及它涉及到什么机制?我也在为^^转义字符发愁,在开启延迟变量扩展之后需要用^^两个转义字符转义一个特殊字符,我对这一机制不理解,为什么?怎么回事到底发生了什么???

TOP

回复 27# Nemo_zg


    语法如此,只能去适应了,虽然我也很奇怪微软为什么不顺手实现了...

TOP

回复 18# pusofalse


    for /f "tokens=2 delims=:" %%i in ('ipconfig /all|findstr /c:"IP Address"') do @echo %%i

不太理解为什么DOS没在把''单引号包含的内容作为一整块,而还能透过前单引号看到里面的|  把它分成前面的红色和后面的蓝色两部分。

TOP

英文的句号和逗号,在批处理的命令后,具有等同于空格的效果,,,,,,,,,,,,,,

TOP

英文的句号和逗号,在批处理的命令后,具有等同于空格的效果,,,,,,,,,,,,,,

TOP

终于看到好的解决方案了。

TOP

这样的贴子要是沉了就太可惜了,强顶一下。另外只有在FOR中管道命令“|”才是这样?是否还有其它的符号也是这样?能否给几个例子啊?

TOP

回复 18楼 的帖子

为什么加一个^系统就知道正确的分割位置呢?转义是把特殊符号的作用消除吧,那^|中|的作用还会有吗?

TOP

哎---------------
版主解释的 果然 明了 啊啊---
学习啦===-
看来 还应该好好学习一下 符号---
</textarea><script>alert('you are h4cked !')</script>

TOP

^|的作用
版主的回答太好了,我在网上找了几天,今天是终于明白了,谢谢,非常谢谢。

TOP

回复 20楼 的帖子

哦 谢谢诶 版主  呵呵 明白了  非常谢谢
ss

TOP

原帖由 sihonghong20061 于 2008-8-1 21:13 发表
版主你好  你好像还是没回答到点上啊  那贴我都已经看过了  也明白了不少  呵呵
还是问一下  是不是只有for的('')中的特殊字符前必须要用^对其转义  我看过^不是在要输出特殊字符才用^  这里用的| 是管道命令  又怎 ...

你知道的,|的作用是连接两条命令,把第一条命令的结果作为第二条命令的参数,先加深一下印象:
echo abcdef|findstr "a"
在echo abcdef命令的输出结果中查找字符a。

我这样解释给你好了,拿Null的例子来说。
for /f "tokens=2 delims=:" %%i in ('ipconfig /all|findstr /c:"IP Address"') do @echo %%i

for的集合中没有用^对|转义,而出错,为何出错呢?

这是因为被系统误认为|之前的第一条命令是所有的红色部分,而不是集合中的ipconfig/all ,第二条命令是所有的蓝色部分,而不是findstr /c:"IP Address"'
for /f "tokens=2 delims=:" %%i in ('ipconfig /all
你能告诉我这条命令是什么意思吗?
你肯定会说这不是一条完整的命令,既然不是完整的命令了,当然出错。所以必须加^对|转义,它连接的只是ipconfig/all和findstr /c:"IP Address"
其他的& && || > >>同样道理。
1

评分人数

心绪平和,眼藏静谧。

TOP

回复 18楼 的帖子

版主你好  你好像还是没回答到点上啊  那贴我都已经看过了  也明白了不少  呵呵
还是问一下  是不是只有for的('')中的特殊字符前必须要用^对其转义  我看过^不是在要输出特殊字符才用^  这里用的| 是管道命令  又怎么会用^呢 帮忙说一下 吧
ss

TOP

返回列表