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

[文本处理] 批处理中变量延迟及管道符怎么使用?

[复制链接]
发表于 2016-9-21 13:53:04 | 显示全部楼层 |阅读模式
见图或下面拷屏,涉及变量延缓及管道的问题,实在想不明白,请高手指点,谢谢。
===============================
C:\>more b.bat
@Echo Off & Setlocal Enabledelayedexpansion & setlocal EnableExtensions
set a=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11
set b=    ServiceName REG_SZ  {4A966A11-AE30-4187-B6D1-7C029202087D}
set c=    Description REG_SZ  Realtek RTL8139/810x Family Fast Ethernet NIC
@echo !a! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
@echo !b! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
@echo !c! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO

C:\>b.bat
YES
YES
YES

C:\>@echo HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11 | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul && echo YES || echo NO
NO

C:\>@echo     ServiceName REG_SZ  {4A966A11-AE30-4187-B6D1-7C029202087D} | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul && echo YES || echo NO
NO

C:\>@echo     Description REG_SZ  Realtek RTL8139/810x Family Fast Ethernet NIC | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul && echo YES || echo NO
YES

评分

参与人数 1PB -2 收起 理由
pcl_test -2 优先文字说明,能用文字说明清楚的勿发图片

查看全部评分

发表于 2016-9-21 13:59:47 | 显示全部楼层
建议LZ先把基础学好
  1. @echo off
  2. set "a=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11"
  3. set "b=    ServiceName REG_SZ  {4A966A11-AE30-4187-B6D1-7C029202087D}"
  4. set "c=    Description REG_SZ  Realtek RTL8139/810x Family Fast Ethernet NIC"
  5. echo,%a%|find "Realtek RTL8139/810x Family Fast Ethernet NIC">nul&&echo YES||echo NO
  6. echo,%b%|find "Realtek RTL8139/810x Family Fast Ethernet NIC">nul&&echo YES||echo NO
  7. echo,%c%|find "Realtek RTL8139/810x Family Fast Ethernet NIC">nul&&echo YES||echo NO
  8. pause
复制代码
 楼主| 发表于 2016-9-21 14:26:31 | 显示全部楼层
回复 2# pcl_test
该脚本仅仅实际脚本抽出来测试错误的一部分,实际脚本用有使用for及需启用环境变量延缓,而不仅仅是预处理的变量替换。在启用环境变量延缓的情况下应该如何处理?谢谢。
 楼主| 发表于 2016-9-21 15:56:47 | 显示全部楼层
已解决,见下
=============================
C:\>more b.bat
@Echo Off & Setlocal Enabledelayedexpansion & setlocal EnableExtensions
set a=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11
set b=    ServiceName REG_SZ  {4A966A11-AE30-4187-B6D1-7C029202087D}
set c=    Description REG_SZ  Realtek RTL8139/810x Family Fast Ethernet NIC
echo !a! | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo !b! | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo !c! | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo.
echo !a! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo !b! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo !c! ^| findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo.
endlocal Enabledelayedexpansion & endlocal EnableExtensions
echo %a% | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo %b% | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO
echo %c% | findstr /C:"Realtek RTL8139/810x Family Fast Ethernet NIC" >nul  && echo YES || echo NO

C:\>b.bat
NO
NO
YES

YES
YES
YES

NO
NO
YES

C:\>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 09:14 , Processed in 0.020520 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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