@ECHO OFF
IF "%OS%"=="Windows_NT" SETLOCAL
:: Version number for this batch file
SET MyVer=1.01
:: Display "about"
ECHO.
ECHO ADSHelp.bat, Version %MyVer% for Windows Server 2003
ECHO Generate an HTML help file for the Directory Service command line tools
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
ECHO.
ECHO Writing HTML header . . .
> adshelp.htm ECHO ^
>>adshelp.htm ECHO ^
:: Read Windows version using VER command
FOR /F "tokens=1 delims=[" %%A IN ('VER') DO SET Ver=%%A
FOR /F "tokens=1* delims= " %%A IN ('ECHO.%Ver%') DO SET Ver=%%B
:: Read latest Service Pack from registry
CALL :GetSP
>>adshelp.htm ECHO ^Help for Directory Service command line tools^
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO ^Help for^
>>adshelp.htm ECHO ^Directory Service command line tools^
:: >>adshelp.htm ECHO ^%Ver%%SP%^
>>adshelp.htm ECHO ^Windows Server 2003 %SP%^
FOR /F "tokens=* delims=" %%A IN ('VER') DO SET Ver=%%A
>>adshelp.htm ECHO ^%Ver%^
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
ECHO Creating command index table . . .
SET FirstCell=1
>>adshelp.htm ECHO ^
SET Lines=1
SET DSCmd=
FOR %%A IN (DSADD DSGET DSMOD DSMOVE DSQUERY DSRM) DO FOR /F "tokens=* delims=" %%B IN ('%%A /? 2^>^&1 ^| FIND /V "/?"') DO CALL :DispExec "%%A" "%%B" 2>NUL
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^Back to the top of this page^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
ECHO Creating help for individual commands . . .
FOR %%A IN (DSADD DSGET DSMOD DSMOVE DSQUERY DSRM) DO CALL :DispHelp %%A
ECHO Closing HTML file . . .
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^More detailed descriptions on Microsoft's Windows Server 2003 Directory Service command line tools can be found
>>adshelp.htm ECHO ^here^^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^This HTML help file and the associated text files were generated by:^
>>adshelp.htm ECHO ^ADSHelp.bat^, Version %MyVer%
>>adshelp.htm ECHO for Windows 2003 Server^
>>adshelp.htm ECHO Written by Rob van der Woude^
>>adshelp.htm ECHO ^http://www.robvanderwoude.com^^
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO ^
ECHO.
ECHO The following files have been created and stored in the current directory:
DIR /B adshelp.htm ds*_*.txt
ECHO.
ECHO Now starting display of "adshelp.htm" . . .
START "ADSHelp" adshelp.htm
:: End of main batch program
ENDLOCAL
GOTO:EOF
:: Subroutines
:DispExec
IF /I NOT "%~1"=="%DSCmd%" (
SET Descr=
SET DSCmd=%~1
SET Lines=1
)
IF %Lines%==0 GOTO:EOF
IF "%~2"=="" (
SET Lines=0
GOTO:EOF
)
FOR /F "tokens=1 delims=." %%C IN ('ECHO.%~2') DO IF DEFINED Descr (SET Descr=%Descr% %%C) ELSE (SET Descr=%%C)
ECHO.%2 | FIND "." >NUL
IF NOT ERRORLEVEL 1 (
FOR /F "tokens=1* delims=:" %%C IN ('ECHO.%Descr%') DO IF NOT "%%D"=="" SET Descr=%%D
SET Lines=0
)
IF %Lines%==0 (
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO ^^%DSCmd%^^ |
>>adshelp.htm ECHO ^^ ^ |
>>adshelp.htm ECHO ^^%Descr%^ |
>>adshelp.htm ECHO ^
)
GOTO:EOF
:DispHelp
ECHO . . . %~1
>>adshelp.htm ECHO ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^%~1^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^
>>adshelp.htm %~1 /? 2>NUL
>>adshelp.htm ECHO ^
^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
IF /I NOT "%~1"=="DSGET" IF /I NOT "%~1"=="DSMOVE" IF /I NOT "%~1"=="DSRM" (
>>adshelp.htm ECHO ^
FOR /F "tokens=1* delims=-" %%B IN ('%~1 OU /? 2^>NUL ^| FINDSTR /R /I /B /C:"%~1 [^ -][^ -]* /\? - "') DO CALL :DispDetails "%%B" "%%C"
>>adshelp.htm ECHO ^
)
IF /I "%~1"=="DSGET" (
>>adshelp.htm ECHO ^
FOR /F "tokens=1* delims=-" %%B IN ('%~1 OU /? 2^>NUL ^| FINDSTR /R /I /B /C:"%~1 [^/ -][^\? -]* - "') DO CALL :DispDetails "%%B" "%%C"
>>adshelp.htm ECHO ^
)
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^Back to the top of this page^
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^
>>adshelp.htm ECHO.
GOTO:EOF
:DispDetails
>>adshelp.htm ECHO ^
FOR /F "tokens=1,2" %%D IN ('ECHO.%~1') DO SET Detail=%%D %%E
ECHO %Detail% . . .
:: Convert Detail string to uppercase
CALL :UpCaseDetail
FOR /F "tokens=1,2" %%D IN ('ECHO.%~1') DO IF "%%E"=="*" (SET URL=%%D_Generic) ELSE (SET URL=%%D_%%E)
>>adshelp.htm ECHO ^^%Detail%^^ |
>>adshelp.htm ECHO.
>>adshelp.htm ECHO ^^ ^ |
SET Descr=%~2
ECHO.%1 | FIND /I "dsquery *" >NUL
IF ERRORLEVEL 1 (
>>adshelp.htm ECHO ^^%Descr%^ |
) ELSE (
CALL :DsQueryGen
)
>>adshelp.htm ECHO ^
> %URL%.txt ECHO.
>>%URL%.txt ECHO.%Detail%
>>%URL%.txt ECHO.
>>%URL%.txt ECHO.
>>%URL%.txt %Detail% /? 2>&1
>>%URL%.txt ECHO.
>>%URL%.txt ECHO.
>>%URL%.txt ECHO.
>>%URL%.txt ECHO Click the Back button or press Backspace to return to main page . . .
>>%URL%.txt ECHO.
GOTO:EOF
:DsQueryGen
:: DSQUERY * description is displayed on 2 lines, so we need to add an extra line to the description
FOR /F "tokens=1* delims=[]" %%E IN ('DSQUERY OU /? 2^>NUL ^| FIND /N /V "X@#$X" ^| FIND /I "dsquery * /?"') DO SET LineNum=%%E
SET /A NextLineNum = %LineNum% + 1
FOR /F "tokens=1* delims=[]" %%E IN ('DSQUERY OU /? 2^>NUL ^| FIND /N /V "X@#$X" ^| FIND "[%NextLineNum%]"') DO SET NextLine=%%F
SET Descr=%Descr% %NextLine%
>>adshelp.htm ECHO ^^%Descr%^ |
GOTO:EOF
:GetSP
SET SP=
:: Export registry tree to temporary file
START /WAIT REGEDIT.EXE /E "%Temp%.\%~n0.dat" "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
IF NOT EXIST "%Temp%.\%~n0.dat" GOTO:EOF
:: Read value of "CSDVersion" from temporary file
FOR /F "tokens=2 delims==" %%A IN ('TYPE "%Temp%.\%~n0.dat" ^| FIND /I "CSDVersion"') DO SET SP=%%~A
:: Check if value is valid
ECHO.%SP% | FIND /I "Service Pack" >NUL
IF ERRORLEVEL 1 SET SP=
DEL "%Temp%.\%~n0.dat"
:: Use a shorter notation
IF DEFINED SP SET SP=%SP:Service Pack=SP%
GOTO:EOF
:UpCaseDetail
SET Detail=%Detail:a=A%
SET Detail=%Detail:b=B%
SET Detail=%Detail:c=C%
SET Detail=%Detail:d=D%
SET Detail=%Detail:e=E%
SET Detail=%Detail:f=F%
SET Detail=%Detail:g=G%
SET Detail=%Detail:h=H%
SET Detail=%Detail:i=I%
SET Detail=%Detail:j=J%
SET Detail=%Detail:k=K%
SET Detail=%Detail:l=L%
SET Detail=%Detail:m=M%
SET Detail=%Detail:n=N%
SET Detail=%Detail:o=O%
SET Detail=%Detail:p=P%
SET Detail=%Detail:q=Q%
SET Detail=%Detail:r=R%
SET Detail=%Detail:s=S%
SET Detail=%Detail:t=T%
SET Detail=%Detail:u=U%
SET Detail=%Detail:v=V%
SET Detail=%Detail:w=W%
SET Detail=%Detail:x=X%
SET Detail=%Detail:y=Y%
SET Detail=%Detail:z=Z%
GOTO:EOF