标题: [文本处理] 批处理如何判断字符串是否包含 “(默认)” [打印本页]
作者: 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 - @echo off
- set "ValueName=(默认)"
- echo %ValueName%|findstr /i "(默认)" >nul
- echo %errorlevel%
- set "ValueName=(默默)"
- echo %ValueName%|findstr /i "(默认)" >nul
- echo %errorlevel%
- 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 - @echo off
- setlocal enabledelayedexpansion
- set "OutFile=RegTest.txt"
- set "Flag=1"
- for /f "delims=" %%i in (%OUTFile%) do (
- if !Flag!==1 (
- set "KeyName=%%i"
- echo 单行:!KeyName! :标记:!Flag!
- set "Flag=0"
- echo 改变标记!Flag!
- ) else (
- for /f %%j in (%%i) do (
- set "ValueName=%%j"
- )
- echo 双行:!ValueName!:标记:!Flag!
- echo !ValueName!|findstr /i "(默认)" >nul
- echo 返回值:!errorlevel!
- echo -------------------------------------
- if "!ValueName!"=="(默认)" (
- echo VallueName为默认值
- ) else (
- echo 无操作
- )
- set "Flag=1"
- echo 改变标记!Flag!
- )
- )
- pause
复制代码
作者: wchm01605 时间: 2022-6-13 14:22
输入这个后 setlocal enabledelayedexpansion
把 %errorlevel% 变成 !errorlevel!才能取到批处理运行时付的值 对吗
如果不变的话 就是取到预处理的 值
请问 是这个意思嘛???
谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |