找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26144|回复: 3

[其他] 批处理中以下括号里面的^|是什么意思?求老师解答

[复制链接]
发表于 2024-5-3 01:05:24 | 显示全部楼层 |阅读模式
  1. for /f %%i in ('ipconfig ^| fond "IPv4"') do set a=%%i
  2. echo %a%
复制代码
发表于 2024-5-3 08:48:36 | 显示全部楼层
发表于 2024-5-3 12:42:22 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-5-3 12:44 编辑

回复 1# ll36912

批处理脚本解释器cmd.exe对复合语块(如for.../if.../(...)/...&...等)是先完成预处理再予执行,预处理过程要扫描语块中每个字段,其中遇到%var%类型变量则完成预先赋值,对未被双引号包裹的字段则要处理其中的^转义符,即完成其后字符(通常是cmd语义字符)的转义... 示例如下:
  1. for /f "delims=" %%a in (' "dir /b/a-d | findstr .txt" ') do echo,%%a
复制代码
预处理扫描以上复合语块时,遭遇被双引号包裹的参数字符串,则只对其中可能包含的%var%类型变量赋值,而不作^转义处理,故双引号内无须用^转义符
  1. for /f delims^= %%a in (' dir /b/a-d ^| findstr .txt ') do echo,%%a
复制代码
预处理扫描以上复合语块时,遭遇未被双引号包裹的参数字符串,不仅对其中可能包含的%var%类型变量赋值,还要作^转义处理,转义后 ^= 变为 =,而 ^| 变为 | 。

以上预处理过程可开启 echo on 之后查看和验证代码运行状态信息...
反言之,也可用以下会被报错的两行代码来验证上述预处理规则:
  1. for /f "delims^=" %%a in (' "dir /b/a-d ^| findstr .txt" ') do echo,%%a
复制代码
  1. for /f delims= %%a in (' dir /b/a-d | findstr .txt ') do echo,%%a
复制代码
 楼主| 发表于 2024-5-4 10:39:34 | 显示全部楼层
回复 2# Batcher

感谢你的回答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:02 , Processed in 0.011103 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表