Board logo

标题: [文本处理] [已解决]批处理如何根据指定文本是否含有指定关键词/字符串执行不同操作? [打印本页]

作者: cnlyl    时间: 2016-5-2 20:10     标题: [已解决]批处理如何根据指定文本是否含有指定关键词/字符串执行不同操作?

本帖最后由 cnlyl 于 2016-5-8 09:55 编辑

正在学习批处理,disable_activation.cmd是防止Adobe acrobat 认证回弹修改hosts文件,原来的程序是一行行重复,我想改成for语句,但是,IF %ERRORLEVEL% NEQ 0 判断好像不正确,%ERRORLEVEL% 不是 FIND /C /I "%%N.adobe.com" %WINDIR%\system32\drivers\etc\hosts返回的ERRORLEVEL,请大侠指点迷津,先谢谢了!

::disable_activation.cmd

For %%N in (lm.licenses lmlicenses.wip4 3dns-2 3dns-3 activate activate-sea activate-sjc0 adobe-dns adobe-dns-2 adobe-dns-3 ereg hl2rcv practivate wip3 activate.wip3 ereg.wip3 wwis-dubc1-vip60) Do (
FIND /C /I "%%N.adobe.com" %WINDIR%\system32\drivers\etc\hosts
        IF %ERRORLEVEL% NEQ 0 (
           ECHO.
           ECHO 127.0.0.1        %%N.adobe.com>>%WINDIR%\system32\drivers\etc\hosts
        )
)
作者: cnlyl    时间: 2016-5-2 20:27

回复 1# cnlyl


版主:我是 刚注册的新人,添乱了。不知道何处违规,请版主明示。谢谢!
作者: cnlyl    时间: 2016-5-8 09:54

本帖最后由 cnlyl 于 2016-5-8 10:29 编辑

新人首次注册发帖求助,被莫名扣分、打脸,无人回帖。求人不如求己,现已自行解决。
捣鼓%ERRORLEVEL%不通,另辟蹊径,用FINDSTR结果转向存储为%TEMP%\Tmp.txt,如果存储文件为0字节,说明查找的字符串不存在,替代%ERRORLEVEL%,问题自行粗糙地解决。
  1. ::disable_activation.cmd
  2. For %%N in (3dns-2 3dns-3 activate activate.wip3 activate-sea activate-sjc0 adobe-dns adobe-dns-2 adobe-dns-3 ereg ereg.wip3 hl2rcv lm.licenses lmlicenses.wip4 practivate wip3 wwis-dubc1-vip60) Do (
  3. FINDSTR "%%N.adobe.com" %WINDIR%\system32\drivers\etc\hosts >%TEMP%\Tmp.txt
  4.     For %%F In (%TEMP%\Tmp.txt) Do (If %%~zF GTR 0 Del %TEMP%\Tmp.txt)
  5.     IF Exist %TEMP%\Tmp.txt (
  6.        ECHO.
  7.        ECHO 127.0.0.1 %%N.adobe.com>>%WINDIR%\system32\drivers\etc\hosts
  8.        Del %TEMP%\Tmp.txt
  9.     )
  10. )
  11. pause
复制代码
本来不想再回复了,一走了之,但想了想,君子之道,不能小人一般。既然在此论坛注册过,即使以后不再光顾论坛,萤火虫般的我,也要发光,给有类似疑问的后来人一启示。拜拜!
作者: codegay    时间: 2016-5-8 19:16

论坛都有一个叫做版规的东西。
虽然我也不看。但是我知道有。

大多数用户提问完就不会再登录了。多一个不多,少一个不少。




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