Board logo

标题: [求助]ghost8里的一个批处理?我不懂!! [打印本页]

作者: doslr     时间: 2004-11-12 00:00    标题: [求助]ghost8里的一个批处理?我不懂!!
@ECHO OFF
if not "%windir%*"=="*" goto Error REM: 这句不明白
if "%3*"=="*" goto Sample REM: 这句不明白
if not exist %1 goto Sample
if "%2"=="RTL8139" goto RTL8139
if "%2"=="DLE530TX" goto DLE530TX
if "%2"=="DFE530TX" goto DFE530TX
if "%2"=="DCN530TX" goto DCN530TX
if "%2"=="PRO100" goto PRO100
if "%2"=="IP100" goto IP100
if "%2"=="RTL8029" goto RTL8029
if "%2"=="VIA" goto VIA
if "%2"=="SIS" goto SIS
if "%2"=="3C90X" goto 3C90X
goto Sample
:Sample
echo.
echo Usage: DGS GHO_File Ethernet_Adapter IP_Address
echo Sample: DGS SYS.GHO DLE530TX 1.1 ; SYS.GHO, Legend DFE-530TX, 192.168.1.1
echo DGS E:\X.GHO PRO100 DHCP ; E:\X.GHO, Intel PRO/100, DHCP
echo.
echo Ethernet_Adapter: Realtek RTL8139 Family = RTL8139
echo Legend DFE-530TX = DLE530TX
echo D-Link DFE-530TX = DFE530TX
echo DigitalChina DCN-530TX = DCN530TX
echo Intel PRO/10/100 = PRO100
echo IC Plus IP100 = IP100
echo Realtek RTL8029 = RTL8029
echo VIA Rhine Family = VIA
echo SiS 900/7016 = SIS
echo 3Com 3C90x EtherLink = 3C90X
goto End
:Error
echo.
echo Error!
echo This is GhostCast for DOS.
echo Please exit Windows and boot to DOS.
goto End
:RTL8139
rem - Realtek RTL8139 Family
NIC\RTL8139\RTSPKT.COM 0x60
goto IP
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">LE530TX
rem - Legend DFE-530TX
NIC\DLE530TX\DLKFET.COM 0x60
goto IP
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">FE530TX
rem - D-Link DFE-530TX
NIC\DFE530TX\DLKFET.COM 0x60
goto IP
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">CN530TX
rem - DigitalChina DCN-530TX
NIC\DCN530TX\DCNPKT.COM 0x60
goto IP
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">RO100
rem - Intel PRO/100
NIC\PRO100\E100BPKT.COM 0x60
goto IP
:IP100
rem - IC Plus IP100
NIC\IP100\IP100PD.COM 0x60
goto IP
:RTL8029
rem - Realtek RTL8029
NIC\RTL8029\PCIPKT.COM 0x60
goto IP
:VIA
rem - VIA Rhine Family
NIC\VIA\FETPKT.COM 0x60
goto IP
:SIS
rem - SiS 900/7016
NIC\SIS\SIS900.EXE -n 0x60
goto IP
:3C90X
rem - 3Com 3C90x EtherLink
NIC\3C90X\3C90XPD.COM /I=0x60
goto IP
:IP
if exist WATTCP.CFG del WATTCP.CFG
if "%3"=="DHCP" goto GHOSTSRV
echo IP = 192.168.0.3&gt;&gt; WATTCP.CFG
echo NETMASK = 255.255.255.0&gt;&gt; WATTCP.CFG
echo GATEWAY = &gt;&gt; WATTCP.CFG
goto GHOSTSRV
:GHOSTSRV
echo.
DOSGHSRV.EXE %1 CW -DISK1 -G"-CLONE,MODE=LOAD,SRC=@mcCW,DST=1 -SURE"
goto Uninstall
:Uninstall
echo.
if exist WATTCP.CFG del WATTCP.CFG
if "%2"=="RTL8139" goto RTL8139U
if "%2"=="DLE530TX" goto DLE530U
if "%2"=="DFE530TX" goto DFE530U
if "%2"=="DCN530TX" goto DCN530U
if "%2"=="PRO100" goto PRO100U
if "%2"=="IP100" goto IP100U
if "%2"=="RTL8029" goto RTL8029U
if "%2"=="VIA" goto VIAU
if "%2"=="SIS" goto SISU
if "%2"=="3C90X" goto 3C90XU
:RTL8139U
rem - Realtek RTL8139 Family
NIC\RTL8139\RTSPKT.COM -u
goto End
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">LE530U
rem - Legend DFE-530TX
NIC\DLE530TX\DLKFET.COM /u
goto End
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">FE530U
rem - D-Link DFE-530TX
NIC\DFE530TX\DLKFET.COM -u
goto End
<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">CN530U
rem - DigitalChina DCN-530TX
NIC\DCN530TX\DCNPKT.COM -u
goto End
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">RO100U
rem - Intel PRO/100
NIC\PRO100\E100BPKT.COM -u
goto End
:IP100U
rem - IC Plus IP100
NIC\IP100\IP100PD.COM /u
goto End
:RTL8029U
rem - Realtek RTL8029
NIC\RTL8029\PCIPKT.COM -u
goto End
:VIAU
rem - VIA Rhine Family
NIC\VIA\FETPKT.COM -u
goto End
:SISU
rem - SiS 900/7016
echo SiS 900/7016 Packet Driver can't uninstall.
goto End
:3C90XU
rem - 3Com 3C90x EtherLink
NIC\3C90X\3C90XPD.COM -u /I=0x60
goto End
:End
echo.


if not "%windir%*"=="*" goto Error REM: 这句不明白
if "%3*"=="*" goto Sample REM: 这句不明白
这个 "%windir%*"="*" 这里用"*"星号是什么意思?? %windir%代表系统目录,这个我明白,但是后面的"*"后,%windir%* 是指什么意思呢?? 这个"*"后有什么作用?用这个星号可以判断出它是不是在windows还是在dos下??
if "%3*" =="*" 这里的“*”星号也是如此,有什么作用,起到什么??"


作者: Climbing     时间: 2004-11-12 00:00
其实这里的*号是多余的,在用if判断一个环境变量是否为空字符串时,为了防止环境变量为空,导致"if %var%==1"出现“ if ==1”这种情况,一般都会在变量左右多加一个(或者多个)字符来防止,最常见的是在将环境变量用双引号括起来,例如if "%windir%"=="",当然你也可以用if %windir%#==# 或者 if %windir%*==*来代替双引号。

作者: doslr     时间: 2004-11-16 00:00
呵呵,谢谢climbing大侠!原来 if not "%windir%*"=="*" 是为了防止 %windir%为空,导至 出现 if not ==* 这种情况

作者: lho     时间: 2004-11-29 00:00
高手!

作者: jieok3375     时间: 2006-10-14 00:44
学习了