无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1830|回复: 2
打印 上一主题 下一主题

Win7pe中因IPV6应该注意的问题

[复制链接]
跳转到指定楼层
1#
发表于 2010-11-27 21:44:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看win7pe确实没那么简单,有些程序因为IPV6的关系而出错,请大家仔细对照一下,如ipconfig,好多TFTP的批处理中是从第3个:号读IP,由于IPv6的参与可能要4行;ping /n1 %computer%,得到的是ipv6的回应,要ipv4必须加-4参数。

请各位对照一下,要作代码的改动。以下是改好的tftpd.cmd的代码,支持在PE中或正常系统中、支持在光盘或ISO解开后的任意目录中执行、支持查找启动文件和外置目录盘。(注意,此程序位于h3pe下的一个目录中,带参数执行被认为是在PE中。请根据实情修改)
  1. @echo off
  2. PUSHD %~dp0
  3. set TP=%cd%
  4. cd ..\..
  5. set TFTPROOT=%cd%
  6. set PR=%TFTPROOT%
  7. cd %tp%
  8. SET LAST=%PR:~-1%
  9. IF "%LAST%"=="" set PR=%PR:~0,-1%
  10. IF NOT "%IniDrv%"=="" SET PR=%IniDrv%
  11. IF "%BootOS%"=="" ver|find /i " 5.2">nul &&SET BootOS=03
  12. IF "%BootOS%"=="" ver|find /i " 6.1">nul &&SET BootOS=W7
  13. :DHCP
  14. rem 定义启动引导文件
  15. IF "%1"=="" (
  16. CLS
  17. SET Choice=
  18. Echo.
  19. Echo 〖请问〗
  20. Echo.
  21. SET /P Choice=工作站要使用Grub方式启动吗?(Y/直接回车或其他键代表按默认的LINUX方式启动):
  22. ECHO.
  23. IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
  24. IF /I "%Choice%"=="y" SET PXEFN=grldr
  25. ) ELSE (
  26. if "%PXEFN%"=="" PECMD.EXE LOAD %1\PXEFILE.INI
  27. if "%PXEFN%"=="" For /F "tokens=3" %%i In ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /V PXEFN^|find /I "PXEFN"') do SET PXEFN=%%i
  28. )
  29. IF "%PXEFN%"=="" SET PXEFN=pxelinux.0
  30. IF EXIST %PR%\%PXEFN% goto FindBootFile
  31. for %%i in (z y x w v u t s r q p o n m l k j i h g f e d c b a) do if exist %%i:\%PXEFN% set TFTPROOT=%%i:\&&goto FindBootFile
  32. IF EXIST %Windir\System32\pecmd.exe (
  33. PECMD.EXE MESS 找不到启动文件:%PR%\%PXEFN%,准备好启动文件后请继续……@提示:缺少网启文件 #OK
  34. ) ELSE echo 找不到启动文件:%PR%\%PXEFN%,准备好启动文件后请继续……  &&pause
  35. GOTO DHCP
  36. :FindBootFile
  37. COPY TFTPD*.*.* %temp% /y >nul
  38. SET TP=%temp%
  39. PECMD FIND DHCP4NT.EXE,KILL DHCP4NT.EXE >nul 2>nul
  40. set/a a=-2
  41. IF "%BootOS%"=="W7" set/a a=-3
  42. for /f "usebackq tokens=2 delims=:" %%i in (`ipconfig`) do (
  43. set b=%%i
  44. call :getip
  45. )
  46. For /F "tokens=3" %%i In ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /V ComputerName') do SET ComputerName=%%i
  47. for /f "tokens=1-3,4 delims=." %%i in ("%_myip%") do set/a IP_Pool=100*256*256*256+%%k*256*256+%%j*256+%%i
  48. for /f "tokens=1-3,4 delims=." %%i in ("%_mask%") do set/a mask=%%l*256*256*256+%%k*256*256+%%j*256+%%i
  49. for /f "tokens=1-3,4 delims=." %%i in ("%_Gateway%") do set/a Gateway=%%l*256*256*256+%%k*256*256+%%j*256+%%i
  50. >%TP%\TFTPD32.INI echo.[TFTPD32]
  51. >>%TP%\TFTPD32.INI echo.
  52. >>%TP%\TFTPD32.INI echo.Console Password=tftpd32
  53. >>%TP%\TFTPD32.INI echo.TftpPort=69
  54. >>%TP%\TFTPD32.INI echo.Negociate=1
  55. >>%TP%\TFTPD32.INI echo.ShowProgressBar=1
  56. >>%TP%\TFTPD32.INI echo.Timeout=3
  57. >>%TP%\TFTPD32.INI echo.MaxRetransmit=6
  58. >>%TP%\TFTPD32.INI echo.SecurityLevel=1
  59. >>%TP%\TFTPD32.INI echo.UnixStrings=1
  60. >>%TP%\TFTPD32.INI echo.Services=47
  61. >>%TP%\TFTPD32.INI echo.PersistantLeases=1
  62. >>%TP%\TFTPD32.INI echo.DHCP Ping=1
  63. >>%TP%\TFTPD32.INI echo.Max Simultaneous Transfers=100
  64. >>%TP%\TFTPD32.INI echo.TFTPROOT=%TFTPROOT%
  65. >>%TP%\TFTPD32.INI echo.[DHCP]
  66. >>%TP%\TFTPD32.INI echo.IP_Pool=%IP_Pool%
  67. >>%TP%\TFTPD32.INI echo.PoolSize=100
  68. >>%TP%\TFTPD32.INI echo.Gateway=%Gateway%
  69. >>%TP%\TFTPD32.INI echo.Mask=%mask%
  70. rem >>%TP%\TFTPD32.INI echo.DNS=%Gateway%
  71. >>%TP%\TFTPD32.INI echo.BootFile=%PXEFN%

  72. rem 对H3PE所在的盘共享为PEROOT
  73. set ExtDrv=%IniDrv%\
  74. IF NOT Exist %ExtDrv%\H3PE\WINPE.INI for %%i in (z y x w v u t s r q p o n m l k j i h g f e d c b a) do IF exist %%i:\H3PE\WINPE.INI set ExtDrv=%%i:\
  75. IF NOT Exist %ExtDrv%\H3PE\WINPE.INI set ExtDrv=%TFTPROOT%
  76. net share PEROOT /d >nul 2>nul
  77. net share PEROOT=%ExtDrv% /grant:Guest,full /unlimited
  78. rem icacls %ExtDrv% /t /grant everyone:f
  79. echo.
  80. echo  已将本机 %TFTPROOT% 共享给远程客户(资源名:\\%COMPUTERNAME%\PEROOT,用户名:Guest,密码为空)
  81. echo.
  82. IF EXIST %Windir\System32\pecmd.exe (
  83. PECMD.EXE LINK !%%DESKTOP%%\TFTPD32网络启动服务端,%TP%\TFTPD32.EXE
  84. PECMD.EXE LINK !%%Programs%%\网络启动服务器\TFTPD32网络启动服务端,%TP%\TFTPD32.EXE
  85. PECMD.EXE FILE "%%DESKTOP%%\开启HaneWin网络启动服务端.*"
  86. PECMD.EXE FILE "%%DESKTOP%%\开启TFTPD32网络启动服务端.*"
  87. )
  88. start %TP%\TFTPD32.EXE
  89. :END
  90. EXIT
  91. :::::::::子程序区::::::::::::::
  92. :getip
  93. set /a a=%a%+1
  94. if %a%==1 set _myip=%b%
  95. if %a%==2 set _mask=%b%
  96. if %a%==3 set _Gateway=%b%
  97. goto :eof
复制代码

[ 本帖最后由 hhh333 于 2010-11-27 21:56 编辑 ]
M
2#
发表于 2010-11-27 22:23:18 | 只看该作者
多谢H3老师分享。受教了。
回复

使用道具 举报

3#
发表于 2010-11-27 23:10:10 | 只看该作者
IF "%BootOS%"=="" ver|find /i " 5.2">nul &&SET BootOS=03
IF "%BootOS%"=="" ver|find /i " 6.1">nul &&SET BootOS=W7

XP显示的是版本5.1
所以改为这样更通用

IF "%BootOS%"=="" ver|find /i "[版本 5">nul &&SET BootOS=03
IF "%BootOS%"=="" ver|find /i "[版本 6">nul &&SET BootOS=W7


不知道你有没有找到tftp32的DNS表示方法?tftp32的DNS地址是经过计算的一串数字,不像hanewin那样直接用IP地址表示。就是不知道tftp32的DNS地址是怎么计算的
如果知道了,那tftp32也可以像hanewin那样传递DNS,那客户端就不用手动去配置DNS地址了

hanewin是修改DNS1字段
>>DHCPsrv.ini echo.DNS1IP=%mydns%




仔细研读了楼主的命令,才发现原来是这样计算DNS地址的,原来0PE里的tftp32配置文件也有这些命令,一时没仔细研读
现在终于搞定了DNS地址了
call :getip
)
for /f "tokens=1-4 delims=." %%i in ("%mydns%") do set/a DnsServer=%%l*256*256*256+%%k*256*256+%%j*256+%%i

:getip
ipconfig /all>>_ipconfig.txt
set offset=
for /f "usebackq tokens=3 delims=[" %%i in (`ver^|find /i "["`) do set myver=%%i&&echo %myver%
echo %myver%
for /f "usebackq tokens=1" %%i in (`str _ipconfig.txt 0 0 /f /asc:本地连接^|find "["`) do set offset=%%i
if "%offset%"=="" for /f "usebackq tokens=1" %%i in (`str _ipconfig.txt 0 0 /f /asc:Local Area Connection^|find "["`) do set offset=%%i
if "%offset%"=="" goto L1
for /f "usebackq tokens=2 delims=:" %%i in (`type _ipconfig.txt^|find /i "DNS Servers"`) do set mydns=%%i&&goto :L5
:L1
if "%mydns%"=="" set mydns= 0.0.0.0
if "%mydns%"==" " set mydns= 0.0.0.0

[ 本帖最后由 ones 于 2010-11-28 20:53 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 00:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表