Board logo

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

作者: wchm01605    时间: 2022-6-12 22:28     标题: 批处理如何判断字符串是否包含 “(默认)”

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

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

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

这个也不能用 没有反应

求大神 赐教
作者: Batcher    时间: 2022-6-12 22:33

回复 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
复制代码

作者: wchm01605    时间: 2022-6-13 09:33

你好 大神
你的 代码 跑成功了
但用到我的代码里还是不行啊 返回值 还全是 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
请按任意键继续. . .
作者: Batcher    时间: 2022-6-13 10:34

回复 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
复制代码

作者: wchm01605    时间: 2022-6-13 14:22

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

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2