欢迎各位兄弟 发布技术文章
这里的技术是共享的
用 bat 脚本 先清空 windows 的 hosts 文件 再 192.168.2.2 aaaaa.com.cn 192.168.2.3 aaaaa.com.cn 内容追加到 windows 的 hosts 文件
以下是一个实现所需功能的批处理脚本:
@echo off :: 请求管理员权限 fltmc >nul 2>&1 || ( echo 正在请求管理员权限... start "" /wait PowerShell -Command "Start-Process '%~0' -Verb RunAs" exit /b ) :: 清空hosts文件 type nul > "%SystemRoot%\System32\drivers\etc\hosts" :: 追加新内容 ( echo 192.168.2.2 aaaaa.com.cn echo 192.168.2.3 aaaaa.com.cn ) >> "%SystemRoot%\System32\drivers\etc\hosts" echo 操作已完成!hosts文件已更新。 pause
使用说明:
保存文件:将上述代码复制到记事本中,保存为.bat文件(例如update_hosts.bat)
运行脚本:
直接双击运行时会自动请求管理员权限
若出现UAC提示,请点击"是"确认授权
执行效果:
自动清空现有hosts文件内容
添加以下两条记录:
192.168.2.2 aaaaa.com.cn 192.168.2.3 aaaaa.com.cn
注意事项:
脚本会完全清空原有hosts文件,如有需要请提前备份
必须使用管理员权限才能修改hosts文件
执行完成后按任意键关闭窗口
若遇杀毒软件拦截,请暂时禁用或添加信任
该脚本使用fltmc命令检测管理员权限,比传统方法更简洁可靠。通过type nul命令彻底清空文件,并使用代码块批量写入新内容,确保格式正确。
用 bat 脚本 先清空 windows 的 hosts 文件 再 192.168.2.2 aaaaa.com.cn 192.168.2.3 aaaaa.com.cn 内容追加到 windows 的 hosts 文件
如果你想先清空 hosts 文件,然后再添加新的条目,可以修改批处理脚本如下:
创建一个新的文本文件,并将其命名为 update_hosts.bat。然后,将以下内容复制到该文件中:
bat
@echo off :: 以管理员身份运行脚本 :: 检查是否以管理员身份运行 net session >nul 2>&1 if %errorLevel% == 0 ( echo 正在以管理员身份运行... ) else ( echo 请以管理员身份运行此脚本。 pause exit /b ) :: 备份现有的 hosts 文件 copy /y %SystemRoot%\System32\drivers\etc\hosts %SystemRoot%\System32\drivers\etc\hosts.bak >nul :: 清空 hosts 文件 echo. > %SystemRoot%\System32\drivers\etc\hosts :: 添加新的条目 echo 192.168.2.2 aaaaa.com.cn >> %SystemRoot%\System32\drivers\etc\hosts echo 192.168.2.3 aaaaa.com.cn >> %SystemRoot%\System32\drivers\etc\hosts echo hosts 文件已清空并更新完成。 pause
右键点击 update_hosts.bat 文件,然后选择“以管理员身份运行”。
脚本会自动检查是否以管理员身份运行,如果不是,会提示你以管理员身份运行。
脚本会备份现有的 hosts 文件,清空 hosts 文件,然后添加指定的 IP 地址和域名。
打开 C:\Windows\System32\drivers\etc\hosts 文件,查看内容是否如下:
192.168.2.2 aaaaa.com.cn
192.168.2.3 aaaaa.com.cn
备份:脚本会备份现有的 hosts 文件为 hosts.bak,以防止意外覆盖。
清空:使用 echo. > 命令清空 hosts 文件。
添加条目:使用 echo 命令将新的条目追加到 hosts 文件中。
管理员权限:修改 hosts 文件需要管理员权限,因此脚本会检查是否以管理员身份运行。
通过这种方式,你可以确保 hosts 文件被清空,并只包含你指定的条目。
net session >nul 2>&1 详解
net session >nul 2>&1 是一个常见的命令行操作,用于检查当前是否以管理员身份运行脚本。下面是对这条命令的详细解释:
net session
net session 是一个 Windows 命令,用于列出当前与计算机建立会话的用户。
只有管理员权限的用户才能成功执行 net session 命令。如果当前用户不是管理员,执行该命令会返回错误。
>nul
> 是重定向符号,用于将命令的输出重定向到指定位置。
nul 是 Windows 中的空设备文件,类似于 Linux 中的 /dev/null。将输出重定向到 nul 会丢弃命令的输出,不在屏幕上显示任何信息。
因此,>nul 表示将 net session 的输出丢弃,不显示在屏幕上。
2>&1
2> 是错误输出重定向符号,2 表示标准错误流(stderr)。
&1 表示将错误输出重定向到标准输出流(stdout)的当前位置。
结合 >nul,2>&1 表示将标准错误流也重定向到 nul,即丢弃错误信息。
因此,无论 net session 成功还是失败,都不会在屏幕上显示任何信息。
net session >nul 2>&1 的作用是:
尝试执行 net session 命令。
如果当前用户是管理员,命令会成功执行,但输出被丢弃。
如果当前用户不是管理员,命令会失败,但错误信息也被丢弃。
通过检查命令的返回值(%errorLevel%),可以判断是否以管理员身份运行。
if 语句
通常,net session >nul 2>&1 会与 if 语句结合使用,例如:
bat
net session >nul 2>&1 if %errorLevel% == 0 ( echo 正在以管理员身份运行... ) else ( echo 请以管理员身份运行此脚本。 pause exit /b )
如果 net session 成功执行(%errorLevel% 为 0),说明当前用户是管理员。
如果 net session 失败(%errorLevel% 非 0),说明当前用户不是管理员,脚本会提示用户以管理员身份运行。
net session?
net session 是一个简单且可靠的方法来检查管理员权限,因为它需要管理员权限才能执行。
相比于其他方法(如检查用户组),net session 更加通用且兼容性更好。
net session >nul 2>&1 是一种高效的方式,用于在批处理脚本中检查当前是否以管理员身份运行。它通过尝试执行需要管理员权限的命令,并根据返回值判断权限状态,同时避免在屏幕上显示无关信息。