Using the freeware REG and Resource Kit SHOWMBRS or public domain SHOWMBRS, I have scripted DUaccts.bat to pass each occurance of the selected object to your batch file. The syntax for using DUaccts.bat is:

DUaccts YourBatchFile \[/c\]

where YourBatchFile is the full path to your batch file and /c causes computer accounts in your domain to be passed, instead of the default Domain Users.

When your write your batch script, you must NOT include an exit statement, so the routine can return to DUaccts.bat to retrieve the next object. The single parameter that is passed to your routine is enclosed in double quotes. To strip it, you can use the following two lines:

set param=%1
set param=%param:"=%

NOTE: If you used the /c option, the computer name does not have the leading \\. To insert them, after stripping the double quotes:

set param=\\%param%

DUaccts.bat contains:

@echo off
setlocal
if \{%1\}

\{\} goto syntax
if not exist %1 goto syntax
set batch=%1
set type=u
if /i "%2"

"/c" set type=c
:ok
for /f "Tokens=1*" %%i in ('reg -lv "\MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Domain"') do set domain="%%j"
set domain=%domain:"=%
for /f "Skip=2 Tokens=*" %%i in ('showmbrs "\\%domain%\Domain Users"') do call :parse "%%i"
endlocal
goto end
:syntax
@echo Syntax: DUaccts Batfile \[/c\]
endlocal
goto end
:parse
set parsed=%1
set parsed=%parsed:"=%!
set work=%parsed:$!=%
if "%type%"

"c" goto cn
if not "%parsed%"

"%work%" goto end
set parsed=%parsed:!=%
call %batch% "%parsed%"
goto end
:cn
if "%parsed%"=="%work%" goto end
call %batch% "%work%"
:end

Here is a simple example of a batch you can write to display computer accounts in your domain:

DUaccts c:\folder\listca.bat /c

where c:\folder\listca.bat contains:

@echo off
set param=%1
set param=%param:"=%
@echo %param%