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

[文本处理] [已解决]如何用批处理修改HOSTS文件?

如题,127.0.0.1 下面每行前面的#删除或者替换成空格就OK,这个应该怎么写(前面的注释不用动

命令越简单越好,最好有注释或说明,万分感谢。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. sed -i "/127.0.0.1/,$ s/^#//" "C:\Windows\System32\drivers\etc\hosts"
复制代码

TOP

#192.168.0.1 lala.com
#192.168.0.2 lala.net
上面的变成这样
192.168.0.1 lala.com
192.168.0.2 lala.net

但是127.0.0.1这一行前面的是HOSTS里的注释,这些不册不册无所谓,怎么做才能只对后面的做修改?

TOP

2楼代码就是这样做的

TOP

新建文本,sed -i "/127.0.0.1/,$ s/^#//" "C:\Windows\System32\drivers\etc\hosts" 另存为1.BAT,运行。HOSTS一点改变没有。。

TOP

你是否下载了sed?

TOP

回复 5楼 的帖子

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我刚学习批处理,不太懂,还需要下载SED吗?   这个批处理要在好多机器上用,是否每台机器都需要下载SED?  
下面是我写的,这个会把前面注释部分删掉。。应该怎么改?
  1. @echo off
  2. for /f "skip=18 tokens=* delims=#" %%s in (E:\TDDOWNLOAD\hosts) do (
  3. echo 处理后:%%s
  4. echo.
  5. echo %%s>>c:\bak.txt
  6. )
  7. pause
  8. del E:\TDDOWNLOAD\hosts
  9. copy c:\bak.txt E:\TDDOWNLOAD\hosts
  10. del c:\bak.txt
复制代码

TOP

  1. @echo off
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* "E:\TDDOWNLOAD\hosts"') do if %%a leq 18 echo,%%b>>c:\bak.txt
  3. for /f "skip=18 tokens=* delims=#" %%s in (E:\TDDOWNLOAD\hosts) do (
  4. echo %%s>>c:\bak.txt
  5. )
  6. del E:\TDDOWNLOAD\hosts
  7. copy c:\bak.txt E:\TDDOWNLOAD\hosts
  8. del c:\bak.txt
复制代码
问题已经解决,感谢bat-yangfengoo 感谢楼上各位朋友

TOP

回复 9楼 的帖子

正确的方法是自动判断127.0.0.1在第几行,而不是写死了它在第18行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-9-29 10:54 发表
正确的方法是自动判断127.0.0.1在第几行,而不是写死了它在第18行。


已经改好了,帮忙看看,有没有更简洁的写法?
  1. @echo off
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n "127.0.0.1" "C:\WINDOWS\system32\drivers\etc\hosts"') do set a=%%a
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* "C:\WINDOWS\system32\drivers\etc\hosts"') do if %%a leq %a% echo,%%b>>c:\bak.txt
  4. for /f "skip=%a% tokens=* delims=#" %%s in (C:\WINDOWS\system32\drivers\etc\hosts) do (
  5. echo %%s>>c:\bak.txt
  6. )
  7. del C:\WINDOWS\system32\drivers\etc\hosts
  8. copy c:\bak.txt C:\WINDOWS\system32\drivers\etc\hosts
  9. del c:\bak.txt
复制代码

TOP

  1. @echo off
  2. set "hostfile=C:\WINDOWS\system32\drivers\etc\hosts"
  3. set "tempfile=%temp%\host.tmp"
  4. for /f "delims=:" %%a in ('findstr /n "^127.0.0.1" "%hostfile%"') do (
  5.     set "num=%%a"
  6. )
  7. type nul >"%tempfile%"
  8. for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%hostfile%"') do (
  9.     set "str=%%b"
  10.     setlocal enabledelayedexpansion
  11.     if %%a leq %num% (
  12.         >>"%tempfile%" echo,%%b
  13.     ) else if "!str:~0,1!" equ "#" (
  14.         >>"%tempfile%" echo,!str:~1!
  15.     ) else (
  16.         >>"%tempfile%" echo,%%b
  17.     )
  18.     endlocal
  19. )
  20. move /y "%tempfile%" "%hostfile%"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@echo off
set "hostfile=C:\WINDOWS\system32\drivers\etc\hosts"
set "tempfile=%temp%\host.tmp"
for /f "delims=:" %%a in ('findstr /n "^127.0.0.1" "%hostfile%"') do (
    set "num=%%a"
)
type nul >"%tempfile%"  显示什么,这行代码是什么意思?有什么作用?
for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%hostfile%"') do (
    set "str=%%b"
    setlocal enabledelayedexpansion
    if %%a leq %num% (
        >>"%tempfile%" echo,%%b   这个是将%%b写入到host.tmp里面?  echo,%%是格式?  这行可以写成  echo ,%%b>>"%tempfile%"吗?
    ) else (
        >>"%tempfile%" echo,!str:~1! 这个的意思应该是去掉每行第一个字符吧
    )
    endlocal
)
move /y "%tempfile%" "%hostfile%"

抱歉,我学的比较慢,这个先帮忙说明一下。

TOP

12楼代码已更新
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-9-30 09:23 发表
12楼代码已更新


13楼的问题能帮忙解答一下吗?

TOP

返回列表