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

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

  1. for /f %%i in ('ipconfig ^| fond "IPv4"') do set a=%%i
  2. echo %a%
复制代码

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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
复制代码

TOP

回复 2# Batcher

感谢你的回答

TOP

返回列表