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

[文本处理] 批处理如何判断字符串是否包含 “(默认)”

这是我自己写的 不能用
echo !ValueName!|findstr  "(默认)">nul

不管怎么样 %errorlevel%都返回 0

IF !ValueName!=="(默认)"echo VallueName为默认值 else echo 无操作

这个也不能用 没有反应

求大神 赐教

回复 1# wchm01605
  1. @echo off
  2. set "ValueName=(默认)"
  3. echo %ValueName%|findstr /i "(默认)" >nul
  4. echo %errorlevel%
  5. set "ValueName=(默默)"
  6. echo %ValueName%|findstr /i "(默认)" >nul
  7. echo %errorlevel%
  8. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你好 大神
你的 代码 跑成功了
但用到我的代码里还是不行啊 返回值 还全是 0

我把我的  代码 测试文件 和 输出结果  给您 请指教 :

测试文件 :
"HKEY_CLASSES_ROOT\http\shell\2345Explorer\command"
"    (默认)    REG_SZ    "C:\Program Files (x86)\2345Soft\2345Explorer\2345Explorer.exe" -- "%1""
"HKEY_CLASSES_ROOT\https\shell\2345Explorer\command"
"    (默认)    REG_SZ    "C:\Program Files (x86)\2345Soft\2345Explorer\2345Explorer.exe" -- "%1""
"HKEY_CLASSES_ROOT\.xhtml\OpenWithProgIds"
"    2345ExplorerHTML    REG_SZ    "


代码 ::

@echo off

mode con cols=80 lines=30 & color 0a
TITLE 查找2345AppData
rem ECHO 批处理窗口设置完成

CLS
SETLOCAL

setlocal enabledelayedexpansion

SET OutFile=%CD%\RegTest.txt
Set Flag=1

For /F "tokens=* delims= " %%i in (%OUTFile%) Do (
        IF !Flag!==1 (
        SET KeyName=%%i
        echo 单行:!KeyName! :标记:!Flag!
        SET Flag=0
        echo 改变标记!Flag!
       
        ) ELSE (
        For /F "tokens=1 delims= " %%j in (%%i) DO SET  ValueName=%%j
        echo 双行:!ValueName!:标记:!Flag!

        echo %ValueName%|findstr /i "(默认)" >nul
        echo 返回值 :%errorlevel%
        echo -------------------------------------
       
        IF !ValueName!=="(默认)"echo VallueName为默认值 else echo 无操作


REM        IF !ValueName!="(默认)" REG DELETE !KeyName! /v !ValueName!
        SET Flag=1
        echo 改变标记!Flag!       
        )
       
)

测试结果:
单行:"HKEY_CLASSES_ROOT\http\shell\2345Explorer\command" :标记:1
改变标记0
双行默认):标记:0
返回值 :0
-------------------------------------
改变标记1
单行:"HKEY_CLASSES_ROOT\https\shell\2345Explorer\command" :标记:1
改变标记0
双行:(默认):标记:0
返回值 :0
-------------------------------------
改变标记1
单行:"HKEY_CLASSES_ROOT\.xhtml\OpenWithProgIds" :标记:1
改变标记0
双行:2345ExplorerHTML:标记:0
返回值 :0
-------------------------------------
改变标记1
请按任意键继续. . .

TOP

回复 3# wchm01605
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "OutFile=RegTest.txt"
  4. set "Flag=1"
  5. for /f "delims=" %%i in (%OUTFile%) do (
  6.     if !Flag!==1 (
  7.         set "KeyName=%%i"
  8.         echo 单行:!KeyName! :标记:!Flag!
  9.         set "Flag=0"
  10.         echo 改变标记!Flag!
  11.     ) else (
  12.         for /f %%j in (%%i) do (
  13.             set "ValueName=%%j"
  14.         )
  15.         echo 双行:!ValueName!:标记:!Flag!
  16.         echo !ValueName!|findstr /i "(默认)" >nul
  17.         echo 返回值:!errorlevel!
  18.         echo -------------------------------------
  19.         if "!ValueName!"=="(默认)" (
  20.             echo VallueName为默认值
  21.         ) else (
  22.             echo 无操作
  23.         )
  24.         set "Flag=1"
  25.         echo 改变标记!Flag!
  26.     )
  27. )
  28. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

输入这个后 setlocal enabledelayedexpansion
把 %errorlevel% 变成 !errorlevel!才能取到批处理运行时付的值 对吗
如果不变的话 就是取到预处理的 值

请问 是这个意思嘛???
谢谢

TOP

返回列表