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

[文本处理] 批处理脚本向host写入时,如何自行判断是否已存在目标条目

本帖最后由 CrLf 于 2011-12-21 18:19 编辑

大家好,我初次接触批处理,很多问题都搞不懂,初级水平都谈不上,但是现在又急需用到,在这里向大家求教。
问题是:我需要用批处理修改host文件,但是我写完测试后发现,如果我反复的运行该批处理,那么就会反复的向host文件内添加所写的东西。希望能自动识别,运行批处理时,如果发现已经添加了就不再继续添加。
原批处理如下:
@echo 10.13.0.231 main.tttest.com>>C:\Windows\System32\Drivers\etc\hosts
@echo 10.13.0.231 main.ttmes.com>>C:\Windows\System32\Drivers\etc\hosts

谢谢大家!

回复 4# bluewing009


    以前尝试过返回码,但后来觉得不够实用就选择性遗忘了。搞得现在都喜欢用IF&&||之类的。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

  1. @echo off
  2. set "str1=10.13.0.231 main.tttest.com"
  3. set "str2=10.13.0.231 main.ttmes.com"
  4. call :add "%str1%"
  5. call :add "%str2%"
  6. goto :eof
  7. :add
  8. findstr /i /c:"%~1" C:\Windows\System32\Drivers\etc\hosts
  9. if errorlevel 1 (
  10.     >>C:\Windows\System32\Drivers\etc\hosts echo,%~1
  11. )
复制代码

TOP

回复 2# cjiabing


    个人喜欢用errorleve判断……

TOP

辛苦版主了,非常感谢,测试后向你汇报结果。

TOP

  1. @echo off
  2. :aa
  3. set input=
  4. set /p "input=    请输入:"
  5. findstr  /i  /c:"%input%"  C:\Windows\System32\Drivers\etc\hosts&&echo;输入已存在,按任意键返回!&pause&goto aa
  6. echo;%input%>>C:\Windows\System32\Drivers\etc\hosts
  7. echo 添加完成!
  8. pause
复制代码

未测试,有问题反馈。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表