@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