Board logo

标题: 修改host文件后的问题? [打印本页]

作者: blueghost     时间: 2009-12-9 17:52    标题: 修改host文件后的问题?


@ECHO off&&SET HOSTS=%windir%\system32\drivers\etc\hosts&&SET IP=127.0.0.1
>%HOSTS% ECHO # 本计算机名:%COMPUTERNAME%
FOR /F "eol=# skip=5" %%i in ('findstr /v "^/" %~nx0') DO ECHO %IP% %%i >>%HOSTS%
FOR /F "delims=/" %%i in ('findstr "^/" %~nx0') DO ECHO %%i >>%HOSTS%
&&GOTO :EOF
localhost
/192.168.1.1 vodone.com
/192.168.1.2 www.vodone.com
/192.168.1.3 vlog.vodone.com
/192.168.1.4 images.vodone.com
这个修改HOST文件的过程结束后怎么在调用ipconfig /flushdns刷新下缓存呢?请指教
作者: blueghost     时间: 2009-12-10 11:43
我还想加个进度条进行显示,免得脚本运行闪一下就了事,其他部门的同事根本不懂,也不觉得有多高深。。。。。

谁知道啊?
作者: HAT     时间: 2009-12-10 13:35    标题: Re 2楼

加个进度条就高深了?
作者: 523066680     时间: 2009-12-10 14:19
要感觉高深呀,去掉echo off~
作者: Hanyeguxing     时间: 2009-12-10 14:56
虚荣啊,是最大的原罪。。。
作者: blueghost     时间: 2009-12-10 17:05
虚荣可以先搁着,还是没人告诉我怎么解决我发贴提出的问题啊?
是用
call:ipconfig
:ipconfig /flushdns
&&GOTO :EOF
来调用吗?怎么不行呢?插哪里啊?
作者: Hanyeguxing     时间: 2009-12-11 12:13


  Quote:
Originally posted by blueghost at 2009-12-10 17:05:
虚荣可以先搁着,还是没人告诉我怎么解决我发贴提出的问题啊?
是用
call:ipconfig
:ipconfig /flushdns
&&GOTO :EOF
来调用吗?怎么不行呢?插哪里啊?

只用ipconfig /flushdns就可以,前面加上:,则该命令不会被执行
作者: blueghost     时间: 2009-12-11 12:33
我把ipconfig加进去并能够执行了,但进度条加了后host文件添加很多不需要的数据,怎么回事呢?
@ECHO off&&SET HOSTS=%windir%\system32\drivers\etc\hosts&&SET IP=127.0.0.1
>%HOSTS% ECHO # PC-NAME:%COMPUTERNAME%
FOR /F "eol=# skip=5" %%i in ('findstr /v "^/" %~nx0') DO ECHO %IP% %%i >>%HOSTS%
FOR /F "delims=/" %%i in ('findstr "^/" %~nx0') DO ECHO %%i >>%HOSTS%
ipconfig /flushdns

color 3f
title.
mode con lines=10
rem   进度条 ▉▉▉▉▉
set work=0
set n=0
set mo=0
set number=0
rem  all是总数
set all=60
set time=%all%
:show

:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check

:2

cls
echo  进度: %n% / %all%                                          剩余时间:%time%秒
echo.
echo.
echo                                  完成 %work% %%%
echo.
if not "%num%"=="" echo       %num%
if not "%num%"=="" echo       %num%

if %work%==100 goto end

ping 127.1 -n 1 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
endlocal

:end
endlocal

&&GOTO :EOF
/192.168.1.1 vodone.com
/192.168.1.2 www.vodone.com
/192.168.1.3 vlog.vodone.com
/192.168.1.4 images.vodone.com

作者: Hanyeguxing     时间: 2009-12-11 12:56
FOR /F "eol=# skip=5" %%i in ('findstr /v "^/" %~nx0') DO ECHO %IP% %%i >>%HOSTS%
FOR /F "delims=/" %%i in ('findstr "^/" %~nx0') DO ECHO %%i >>%HOSTS%
把这两个去掉,直接用>>%HOSTS% echo 192.168.1.4 images.vodone.com这样的命令来输出。

你的问题是因为使用了findstr "^/" %~nx0
如果你很想使用findstr,那么需要使用/b参数,强制匹配行首,以区别命令参数中的/

[ Last edited by Hanyeguxing on 2009-12-11 at 13:12 ]
作者: blueghost     时间: 2009-12-11 13:19
搞定,谢谢楼上大侠