Bat

用bat写了个的小东西,实现多个功能之间的切换

花了两天半时间自己编写个小东西,其间感谢木木学长的帮助。本意是为了方便自己更智能地切换Hosts(Hosts中有些IP指向失效,导致部分网页即使开VPN也上不了,故需切换),后来添加了几个小功能(Hosts切换、增加/删除 待办事项的气泡方式定时提醒、网络校时功能(测试前一个功能时候把时间弄乱了Orz)),所以特地发出来分享给大家。(已完善的不同使用条件下的判断)

至于功能方面,还需调用同目录的其他文件,只有以下代码是不行的。所以想测试完整功能的同学还是得下载打包文件夹后的ReQuick_Beta1.1.rar(注意VPN.lnk需要先设置网络连接。不完善的地方欢迎反馈)

@echo off
:title
CLS
color 8F
@title ReQuick Beta1.1 by ReSur 2012-2-1
:MENU
echo 1.更新Hosts
echo 2.Hosts模式
echo 3.VPN模式
echo 4.HOST+VPN模式
echo 5.查看hosts所在文件夹
echo 6.增加待办事项
echo 7.查看或删除待办事项
echo 8.取消所有计划任务
echo 9.网络校时
echo F.检查是否有a.txt,否则输出404页面(待修改)
echo 0.退出
echo 请输入序号并按回车继续..
set clock=
set thing0=
set h=nul
set v=nul
set score=nul
set choices=nul
set /p choices=
if "%choices%"=="0" goto exit
if "%choices%"=="1" goto host
if "%choices%"=="2" (
set h=1
set v=0
goto h00
)
if "%choices%"=="3" (
set h=0
set v=1
goto h00
)
if "%choices%"=="4" (
set h=1
set v=1
goto h00
)
if "%choices%"=="5" goto dir
if "%choices%"=="6" goto at
if "%choices%"=="7" goto delat
if "%choices%"=="8" goto noat
if "%choices%"=="9" goto time
IF /i "%choices%"=="f" goto txt
CLS
goto MENU
 
:back
echo 按任意键返回菜单..
pause > nul
CLS
goto MENU
 
:change
C:
cd %windir%System32driversetc
rename hosts.0 hosts.1
rename hosts hosts.0
rename hosts.1 hosts
cd %~dp0
set score=1
echo 已重列Hosts!
goto :eof
 
:txt
if not exist 404.txt (
echo ----------------------------------------------------
echo 404页面不存在,请先建立404页面,谢谢!!
echo 404 File was deleted or moved,Place md 404.txt first
echo ----------------------------------------------------
echo.
goto back
)
if not exist a.txt (
type 404.txt
echo.
goto back
)
echo Yes!文件存在。
goto back
 
:dir
if exist %windir%System32driversetc (
dir %windir%System32driversetc
) else echo 无法找到Hosts所在文件夹
goto back
 
:compare
call :lis "%windir%System32driversetchosts" hosts
call :lis "%windir%System32driversetchosts.0" hosts0
goto :eof
 
:lis
for %%a in (%~1) do set "%2=%%~za"
goto :eof
 
:h00
C:
cd %windir%System32driversetc
if not exist hosts.0 (
echo 您是第一次运行本程序,现自动切换到序号1更新Hosts
echo 按任意键进入序号1所在功能..
pause>nul
goto host
)
cd %~dp0
call :compare
if %hosts% EQU %hosts0% (
set score=nul
CLS
echo.
echo ERROR
echo 您曾经进入过Hosts更新界面但未执行Hosts更新
echo 必须执行一次Hosts更新
pause>nul
set score=nul
goto host
)
if %h% equ 1 ( if %hosts% LSS %hosts0% call :change )
if %h% equ 0 ( if %hosts% GTR %hosts0% call :change )
if not %score% equ 1 echo 无须重列Hosts
if %v% equ 1 (
if exist VPN.lnk (
echo 正在打开VPN登录界面...
start VPN
) else (
echo VPN.lnk打开失败,请检查位置
goto back
)
)
echo 切换成功!
goto back
 
:host
C:
cd %windir%System32driversetc
if not exist hosts.0 (
if not exist hosts.org (
copy hosts hosts.0 /a
echo 您是第一次运行本程序,现已将您的hosts文件备份到hosts.0
pause
) else (
copy hosts.org hosts.0 /a
echo 【特殊情况】
echo 您是第一次运行本程序,但是在运行本程序之前您曾经执行过Hosts更新!!
echo 现已将您第一次运行Hosts更新的hosts备份文件备份到hosts.0
pause
)
)
cd %~dp0
call :compare
if %hosts% LSS %hosts0% ( call :change
) else (
echo 无须重列Hosts
)
echo 正在打开Hosts更新程序..
call host.bat
color 8F & @title ReQuick Beta1.0 by ReSur 2012-2-1
if %score% equ 1 call :change
call :compare
if %hosts% EQU %hosts0% (
set score=nul
CLS
echo.
echo ERROR
echo 您曾经进入过Hosts更新界面但未执行Hosts更新
echo 必须执行一次Hosts更新
pause>nul
set score=nul
goto host
)
CLS
goto MENU
 
:at
:thing
set /p thing0=请输入要做的事情并回车(如 烧饭):
if "%thing0%"=="" (
echo 输入为空请重新输入!
goto thing
)
set thing=%thing0: =%
:clock
set /p clock=请输入时间并回车(如 17:00):
if "%clock%"=="" (
echo 输入为空请重新输入!
goto clock
)
echo 时间:%clock% 事件:%thing0%>>colck_history.txt
at %clock% /interactive %~dp0estTrayTip.exe %~dp0ali.ico 您有新的待办事项 %thing% 2
if errorlevel 1 (
echo 请按格式输入正确时间!
goto clock
)
if %errorlevel% equ 0 echo 设置成功!
goto back
 
:delat
at
echo.
:id
set id=
set /p id=请输入你要删除的ID(输入0回到主菜单):
if "%id%"=="0" CLS && goto MENU
if "%id%"=="" (
echo 输入为空请重新输入!
goto id
)
at %id% /delete
if errorlevel 1 (
echo 您输入的ID:%id%无效!请重新输入
goto id
)
if %errorlevel% equ 0 echo 已删除ID为%id%的待办事项!
set conti=
set /p conti=是否继续删除待办事项?(Y/N):
IF /i "%conti%"=="y" goto id
CLS
goto MENU
 
:noat
at /delete
if errorlevel 1 echo 已无任务可取消
goto back
 
:time
call time.bat
color 8F & @title ReQuick Beta1.1 by ReSur 2012-2-1
CLS
goto MENU
 
::=================结束================
:exit
echo ______________________________________
echo copyright(c) 1992s.com ReQuick Beta1.1