【问题标题】:Windows Batch: How to add Host-Entries?Windows Batch:如何添加主机条目?
【发布时间】:2011-04-09 15:59:42
【问题描述】:

我想使用此批处理脚本通过 批处理自动将新条目添加到我的主机文件中。

不幸的是,脚本只是在hosts文件中添加了一行,当我以管理员身份运行脚本时也是如此,所以出了什么问题?

@echo off

set hostspath=%windir%\System32\drivers\etc\hosts

echo 62.116.159.4 ns1.intranet.de >> %hostspath%
echo 217.160.113.37 ns2.intranet.de >> %hostpath%
echo 89.146.248.4 ns3.intranet.de >> %hostpath%
echo 74.208.254.4 ns4.intranet.de >> %hostpath%

exit

【问题讨论】:

  • 将哪个添加到文件中。第一个还是最后一个?
  • 真棒问题,很高兴找到准备好的信息并等待。

标签: windows windows-7 batch-file hosts


【解决方案1】:

简单的错字。 hostspathhostpath ;)

@echo off 

set `hostspath`=%windir%\System32\drivers\etc\hosts 

echo 62.116.159.4 ns1.intranet.de >> `%hostspath%`   
echo 217.160.113.37 ns2.intranet.de >> `%hostpath%`  
echo 89.146.248.4 ns3.intranet.de >> `%hostpath%`   
echo 74.208.254.4 ns4.intranet.de >> `%hostpath%`   

exit 

【讨论】:

    【解决方案2】:

    我会这样做,所以如果脚本运行多次,你就不会得到重复的条目。

    @echo off
    
    SET NEWLINE=^& echo.
    
    FIND /C /I "ns1.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^62.116.159.4 ns1.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns2.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^217.160.113.37 ns2.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns3.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^89.146.248.4 ns3.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns4.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^74.208.254.4 ns4.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    

    【讨论】:

    • 这里有明确的答案。干杯!
    • 谢谢!效果很好
    • IF ERRORLEVEL 1 ... 可以使用,读作IF ERRORLEVEL >= 1 THEN。取自ss64.com/nt/errorlevel.html。无需使用NEQ
    • 出于某种原因,这并没有阻止我添加重复条目
    • :1 cls SET /P WEBSITE=输入要添加的网站名称:SET HOME= 127.0.0.1 SET NEWLINE=^& echo。 SET BLOCKEDSITE=%HOME% %WEBSITE% FIND /C /I %BLOCKEDSITE% %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^%BLOCKEDSITE%>>%WINDIR %\System32\ drivers\etc\hosts ECHO 网站阻塞 ping 127.0.0.1 -n 5 > nul GOTO LOOP
    【解决方案3】:

    创建一个新的 addHostEntry.bat 文件,其中包含以下内容:

    @echo off
    TITLE Modifying your HOSTS file
    COLOR F0
    ECHO.
    
    :LOOP
    SET Choice=
    SET /P Choice="Do you want to modify HOSTS file ? (Y/N)"
    
    IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
    
    ECHO.
    IF /I '%Choice%'=='Y' GOTO ACCEPTED
    IF /I '%Choice%'=='N' GOTO REJECTED
    ECHO Please type Y (for Yes) or N (for No) to proceed!
    ECHO.
    GOTO Loop
    
    
    :REJECTED
    ECHO Your HOSTS file was left unchanged>>%systemroot%\Temp\hostFileUpdate.log
    ECHO Finished.
    GOTO END
    
    
    :ACCEPTED
    SET NEWLINE=^& echo.
    ECHO Carrying out requested modifications to your HOSTS file
    FIND /C /I "mydomain.com" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1    mydomain.com>>%WINDIR%\system32\drivers\etc\hosts
    ECHO Finished
    GOTO END
    
    
    :END
    ECHO.
    ping -n 11 127.0.0.1 > nul
    EXIT
    

    希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      这是我对上面@rashy 的修改。该脚本执行以下操作:

      • 它会验证您是否有权访问,如果没有,则请求它
      • 允许您在一个列表中输入多个主机
      • 遍历列表
      • 它会找到包含域名的行并将其删除,然后重新添加它(以防自上次运行脚本以来 ip 已更改)。
      • 如果域不存在,它只会添加它。

      这是脚本:

      @echo off
      TITLE Modifying your HOSTS file
      COLOR F0
      ECHO.
      
      
      :: BatchGotAdmin
      :-------------------------------------
      REM  --> Check for permissions
      >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
      
      REM --> If error flag set, we do not have admin.
      if '%errorlevel%' NEQ '0' (
          echo Requesting administrative privileges...
          goto UACPrompt
      ) else ( goto gotAdmin )
      
      :UACPrompt
          echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
          set params = %*:"="
          echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
      
          "%temp%\getadmin.vbs"
          del "%temp%\getadmin.vbs"
          exit /B
      
      :gotAdmin
          pushd "%CD%"
          CD /D "%~dp0"
      :--------------------------------------
      
      :LOOP
      SET Choice=
      SET /P Choice="Do you want to modify HOSTS file ? (Y/N)"
      
      IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
      
      ECHO.
      IF /I '%Choice%'=='Y' GOTO ACCEPTED
      IF /I '%Choice%'=='N' GOTO REJECTED
      ECHO Please type Y (for Yes) or N (for No) to proceed!
      ECHO.
      GOTO Loop
      
      
      :REJECTED
      ECHO Your HOSTS file was left unchanged>>%systemroot%\Temp\hostFileUpdate.log
      ECHO Finished.
      GOTO END
      
      
      :ACCEPTED
      setlocal enabledelayedexpansion
      ::Create your list of host domains
      set LIST=(diqc.oca wiki.oca)
      ::Set the ip of the domains you set in the list above
      set diqc.oca=192.168.111.6
      set wiki.oca=192.168.111.4
      :: deletes the parentheses from LIST
      set _list=%LIST:~1,-1%
      ::ECHO %WINDIR%\System32\drivers\etc\hosts > tmp.txt
      for  %%G in (%_list%) do (
          set  _name=%%G
          set  _value=!%%G!
          SET NEWLINE=^& echo.
          ECHO Carrying out requested modifications to your HOSTS file
          ::strip out this specific line and store in tmp file
          type %WINDIR%\System32\drivers\etc\hosts | findstr /v !_name! > tmp.txt
          ::re-add the line to it
          ECHO %NEWLINE%^!_value! !_name!>>tmp.txt
          ::overwrite host file
          copy /b/v/y tmp.txt %WINDIR%\System32\drivers\etc\hosts
          del tmp.txt
      )
      ipconfig /flushdns
      ECHO.
      ECHO.
      ECHO Finished, you may close this window now.
      ECHO You should now open Chrome and go to "chrome://net-internals/#dns" (without quotes)
      ECHO     then click the "clear host cache" button
      GOTO END
      
      :END
      ECHO.
      ping -n 11 192.0.2.2 > nul
      EXIT
      

      【讨论】:

      • 很好,很完整的脚本:)
      • 就像一个魅力!非常感谢! (Win10测试)
      • 终身保护。谢谢! :)
      • 以防万一有人使用这个几乎完美的脚本,当它需要权限并且您将参数传递到脚本中时,我发现了一个小问题。您将需要摆脱空格,即设置 params=%&:"="
      【解决方案5】:

      好吧,我写了一个运行良好的脚本。

      > @echo off TITLE Modifying your HOSTS file COLOR F0 ECHO.
      > 
      > :LOOP SET Choice= SET /P Choice="Do you want to modify HOSTS file ?
      > (Y/N)"
      > 
      > IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
      > 
      > ECHO. IF /I '%Choice%'=='Y' GOTO ACCEPTED IF /I '%Choice%'=='N' GOTO
      > REJECTED ECHO Please type Y (for Yes) or N (for No) to proceed! ECHO.
      > GOTO Loop
      > 
      > 
      > :REJECTED ECHO Your HOSTS file was left
      > unchanged>>%systemroot%\Temp\hostFileUpdate.log ECHO Finished. GOTO
      > END
      > 
      > 
      > :ACCEPTED SET NEWLINE=^& echo. ECHO Carrying out requested
      > modifications to your HOSTS file FIND /C /I "www.youtube.com"
      > %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0 ECHO
      > %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO 127.0.0.1    www.youtube.com>>%WINDIR%\system32\drivers\etc\hosts
      > FIND /C /I "youtube.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youtube.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.zacebookpk.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.zacebookpk.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "zacebookpk.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > zacebookpk.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.proxysite.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.proxysite.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.proxfree.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.proxfree.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.hidemyass.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.hidemyass.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.freeyoutubeproxy.org" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.freeyoutubeproxy.org>>%WINDIR%\system32\drivers\etc\hosts FIND /C
      > /I "www.facebook.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.facebook.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "facebook.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > facebook.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.4everproxy.com " %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1    www.4everproxy.com
      > >>%WINDIR%\system32\drivers\etc\hosts FIND /C /I "4everproxy.com " %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0 ECHO
      > %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO 127.0.0.1    4everproxy.com >>%WINDIR%\system32\drivers\etc\hosts
      > FIND /C /I "proxysite.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > proxysite.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "proxfree.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > proxfree.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "hidemyass.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > hidemyass.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "freeyoutubeproxy.org" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > freeyoutubeproxy.org>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "unblockvideos.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > unblockvideos.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "proxyone.net" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > proxyone.net>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "kuvia.eu" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1    kuvia.eu>>%WINDIR%\system32\drivers\etc\hosts
      > FIND /C /I "kuvia.eu/facebook-proxy"
      > %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0 ECHO
      > %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO 127.0.0.1   
      > kuvia.eu/facebook-proxy>>%WINDIR%\system32\drivers\etc\hosts FIND /C
      > /I "hidemytraxproxy.ca" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > hidemytraxproxy.ca>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "github.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > github.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "funproxy.net" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > funproxy.net>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "en.wikipedia.org" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > en.wikipedia.org>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "wikipedia.org" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > wikipedia.org>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "dronten.proxylistpro.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > dronten.proxylistpro.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C
      > /I "proxylistpro.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > proxylistpro.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "zfreez.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > zfreez.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "zendproxy.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > zendproxy.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "zalmos.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > zalmos.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "zacebookpk.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > zacebookpk.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "youtubeunblockproxy.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youtubeunblockproxy.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C
      > /I "youtubefreeproxy.net" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youtubefreeproxy.net>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "youliaoren.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youliaoren.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "xitenow.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > xitenow.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.youtubeproxy.pk" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.youtubeproxy.pk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "youtubeproxy.pk" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youtubeproxy.pk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.youproxytube.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.youproxytube.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.webmasterview.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.webmasterview.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "webmasterview.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > webmasterview.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "youproxytube.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > youproxytube.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.vobas.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.vobas.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "vobas.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1    vobas.com>>%WINDIR%\system32\drivers\etc\hosts
      > FIND /C /I "www.unblockmyweb.com" %WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO
      > %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO 127.0.0.1   
      > www.unblockmyweb.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "unblockmyweb.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > unblockmyweb.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.unblocker.yt" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.unblocker.yt>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "unblocker.yt" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > unblocker.yt>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.unblock.pk" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.unblock.pk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "unblock.pk" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > unblock.pk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.techgyd.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.techgyd.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "techgyd.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > techgyd.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.snapdeal.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.snapdeal.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "snapdeal.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > snapdeal.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.site2unblock.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.site2unblock.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "site2unblock.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > site2unblock.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.shopclues.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.shopclues.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "shopclues.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > shopclues.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.proxypk.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.proxypk.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "proxypk.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > proxypk.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.proxay.co.uk" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.proxay.co.uk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "proxay.co.uk" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > proxay.co.uk>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.myntra.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.myntra.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "myntra.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > myntra.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.maddw.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.maddw.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "maddw.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1    maddw.com>>%WINDIR%\system32\drivers\etc\hosts
      > FIND /C /I "www.lenskart.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.lenskart.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "lenskart.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > lenskart.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.kproxy.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.kproxy.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "kproxy.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > kproxy.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.jabong.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.jabong.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "jabong.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > jabong.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.flipkart.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.flipkart.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "flipkart.com" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ
      > 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO 127.0.0.1   
      > flipkart.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.facebook-proxyserver.com" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.facebook-proxyserver.com>>%WINDIR%\system32\drivers\etc\hosts FIND
      > /C /I "facebook-proxyserver.com" %WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO
      > %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL% NEQ 0
      > ECHO 127.0.0.1   
      > facebook-proxyserver.com>>%WINDIR%\system32\drivers\etc\hosts FIND /C
      > /I "www.dontfilter.us" %WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts
      > IF %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.dontfilter.us>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "dontfilter.us" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > dontfilter.us>>%WINDIR%\system32\drivers\etc\hosts FIND /C /I
      > "www.dolopo.net" %WINDIR%\system32\drivers\etc\hosts IF %ERRORLEVEL%
      > NEQ 0 ECHO %NEWLINE%>>%WINDIR%\system32\drivers\etc\hosts IF
      > %ERRORLEVEL% NEQ 0 ECHO 127.0.0.1   
      > www.dolopo.net>>%WINDIR%\system32\drivers\etc\hosts ECHO Finished GOTO
      > END
      > 
      > 
      > :END ECHO. ping -n 11 127.0.0.1 > nul EXIT
      

      【讨论】:

      • 不要在每一行前面使用后面的代码。这是一个错误。而且我懒得删除它。
      • 你绝对应该
      【解决方案6】:

      我添加此答案以防其他人希望将主机条目集存储在格式类似于普通主机文件的 txt 文件中。这将查找 TAB 分隔符。这是基于@Rashy 和@that0n3guy 的回答。可以注意到 FOR 命令周围的差异。

      @echo off
      TITLE Modifying your HOSTS file
      ECHO.
      
      :: BatchGotAdmin
      :-------------------------------------
      REM  --> Check for permissions
      >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
      
      REM --> If error flag set, we do not have admin.
      if '%errorlevel%' NEQ '0' (
          echo Requesting administrative privileges...
          goto UACPrompt
      ) else ( goto gotAdmin )
      
      :UACPrompt
          echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
          set params = %*:"="
          echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
      
          "%temp%\getadmin.vbs"
          del "%temp%\getadmin.vbs"
          exit /B
      
      :gotAdmin
          pushd "%CD%"
          CD /D "%~dp0"
      :--------------------------------------
      
      :LOOP
      SET Choice=
      SET /P Choice="Do you want to modify HOSTS file ? (Y/N)"
      
      IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
      
      ECHO.
      IF /I '%Choice%'=='Y' GOTO ACCEPTED
      IF /I '%Choice%'=='N' GOTO REJECTED
      ECHO Please type Y (for Yes) or N (for No) to proceed!
      ECHO.
      GOTO Loop
      
      
      :REJECTED
      ECHO Your HOSTS file was left unchanged.
      ECHO Finished.
      GOTO END
      
      
      :ACCEPTED
      setlocal enabledelayedexpansion
      ::Create your list of host domains
      for /F "tokens=1,2 delims=  " %%A in (%WINDIR%\System32\drivers\etc\storedhosts.txt) do (
          SET _host=%%B
          SET _ip=%%A
          SET NEWLINE=^& echo.
          ECHO Adding !_ip!       !_host!
          REM REM ::strip out this specific line and store in tmp file
          type %WINDIR%\System32\drivers\etc\hosts | findstr /v !_host! > tmp.txt
          REM REM ::re-add the line to it
          ECHO %NEWLINE%^!_ip!        !_host! >> tmp.txt
          REM ::overwrite host file
          copy /b/v/y tmp.txt %WINDIR%\System32\drivers\etc\hosts
          del tmp.txt 
      )
      
      ipconfig /flushdns
      ECHO.
      ECHO.
      ECHO Finished, you may close this window now.
      GOTO END
      
      :END
      ECHO.
      PAUSE
      EXIT
      

      示例“storedhosts.txt”(制表符分隔)

      127.0.0.1   mysite.com
      168.1.64.2  yoursite.com
      192.1.0.1   internalsite.com
      

      【讨论】:

        【解决方案7】:

        有时我必须在家工作并通过 vpn 连接到办公室。内部域名应该在家里解析到不同的IP。在办公室和家庭之间有几个名称必须更改。例如:

        At office, a => 192.168.0.3, b => 192.168.0.52. 
        At home, a => 10.6.1.7, b => 10.4.5.23. 
        

        我的解决方案是创建两个文件:C:\WINDOWS\system32\drivers\etc\hosts-home 和 C:\WINDOWS\system32\drivers\etc\hosts-office。它们中的每一个都包含一组名称到 IP 的映射。来自 Administrator PowerShell,当我在办公室工作时,执行

        C:\WINDOWS\system32> cp .\drivers\etc\hosts-office .\drivers\etc\hosts
        

        到家后执行

        C:\WINDOWS\system32> cp .\drivers\etc\hosts-home .\drivers\etc\hosts
        

        【讨论】:

          【解决方案8】:

          我从各种来源获得的修订结果,使用notepad.exe 添加、删除或编辑,并使用下面的.bat 文件与管理员自动运行:

          @echo off
          fsutil dirty query %SystemDrive% >nul || (
             PowerShell "Start-Process -FilePath '%0' -Verb RunAs"
             Exit
          )
          cd /d %SystemRoot%\System32\drivers\etc
          rem start notepad.exe hosts
          call notepad.exe hosts
          echo.
          echo Successfully added IP Address to localhost.
          ipconfig /flushdns
          timeout /t 3 >>nul
          exit
          

          【讨论】:

          • 我认为您的 .bat 文件不会等到您在 notepad.exe 中完成对 hosts 的编辑。所以你可能会过早地刷新 dns。
          猜你喜欢
          • 1970-01-01
          • 2020-12-31
          • 1970-01-01
          • 2017-09-09
          • 2020-04-20
          • 1970-01-01
          • 2019-10-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多