title 更改用户密码
set /p user=更改何者的密码(1-用户1,2-用户2,只能输入1或2,输入其他将进入命令行):
if not "%user%"=="1" if not "%user%"=="2" commandline
if "%user%"=="1" set passfile=pass1.txt
if "%user%"=="2" set passfile=pass2.txt
map /grub/password.ima (fd0)
map --hook
echo 请输入原密码:
cat (fd0)/%passfile% | password
set /p newpass=请输入新密码:
echo 请再次输入新密码(以验证新密码)
password %newpass%
echo %newpass% > (fd0)/%passfile%
#上句>号的前后必须有一个空格,否则只当为显示echo的功能
map --unhook
configfile /grub/menu.lst
title 更改Win2003PE/Win7PE密码
echo Change who's Password:
echo 1-Win2003PE
echo 2-Win7PE
set /p user=Please Input 1 or 2 (Input Others to Return Main Menu):
#使用/message配置的gfxmenu(utf-8格式),下句不能正常执行。
if not "%user%"=="1" if not "%user%"=="2" configfile /grub/menu.lst
cat --locate=pass2 /grub/password.cfg | set lmid=
set /a lmid=0x%lmid%
#以上2句将pass2串的位置的十进制值保存到变量lmid中
cat --length=%lmid% /grub/password.cfg | set pass1=
echo %pass1:~6% | set pass1=
cat --skip=%lmid% /grub/password.cfg | set pass2=
echo %pass2:~6% | set pass2=
#上两句中的pass1、pass2的密码可为明码、md5码或两者的混合码(这可方便在设置初始密码时使用明码,在重设密码时分次保存为md5码)
if "%user%"=="1" set oldpass=%pass1%
if "%user%"=="2" set oldpass=%pass2%
echo Please Input old Password:
echo %oldpass% | password
echo Please Input New Password First
set /p newpass=Password:
echo Please Input New Password again
password %newpass%
md5crypt %newpass% | set newpass=
if "%user%"=="1" echo pass1=--md5 %newpass:~11% > /grub/password.cfg
if "%user%"=="1" echo pass2=%pass2% >> /grub/password.cfg
if "%user%"=="2" echo pass1=%pass1% > /grub/password.cfg
if "%user%"=="2" echo pass2=--md5 %newpass:~11% >> /grub/password.cfg
pause --wait=10 Password Changed OK!
configfile /grub/menu.lst作者: chenall 时间: 2011-4-21 17:20
@qj_tzy
抱歉,我时间有限,你可以自己找答案,或等别人的答案。
有问题可以自己调试一下原因在哪里。多跟踪几次就会发现了。