Using AdFind freeware and AdMod freeware, I have scripted CountryCode.bat as a sample to set the countrycode and c attributes for a user based upon the suffix of their email address. Specifically, I was asked to make a .COM suffix set c to US and countrycode to 840, and a .CA suffix to set c to CA and countrycode to 124.

NOTE: See the ISO Code and ISO Short columns.

The syntax for running CountryCode.bat is:

CountryCode \[domain\]

where domain is optional. If not specified, domain defaults to the %USERDNSDOMAIN% variable, like JSIINC.COM.

CountryCode.bat contains:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set domain=%1
set domain=%domain:"=%
if \{%1\}==\{\} set domain=%USERDNSDOMAIN%
for /f "Skip=3 Tokens=1* Delims=:" %%a in ('adfind -default -noctl -f "&(objectcategory=person)(objectClass=user)" mail') do (
 set p1=%%a
 set p1=!p1:~1!
 set p2="%%b"
 set p2=!p2:" ="!
 if "!p1!" EQU "n" call :update
 if !p2! EQU "" call :update
 if "!p1!" EQU "mail" set mail=!p2!
)
endlocal
goto :EOF
:update
if not defined dn goto :update2
if not defined mail goto update2
set work=!mail:*@=@!
set work=%work:"=%
set cc=
for /f "Tokens=1-8 Delims=." %%i in ('@echo %work%') do (
 if not defined cc if "%%p" NEQ "" set cc=%%p
 if not defined cc if "%%o" NEQ "" set cc=%%o
 if not defined cc if "%%n" NEQ "" set cc=%%n
 if not defined cc if "%%m" NEQ "" set cc=%%m
 if not defined cc if "%%l" NEQ "" set cc=%%l
 if not defined cc if "%%k" NEQ "" set cc=%%k
 if not defined cc if "%%j" NEQ "" set cc=%%j
 if not defined cc if "%%i" NEQ "" set cc=%%i
)
if not defined cc goto update1
set mail=!mail:"=!
set cc=%cc:"=%
if /i "%cc%" EQU "CA" set c=CA&set countrycode=124&goto update1
if /i "%cc%" EQU "COM" set c=US&set countrycode=840&goto update1
goto update2
:update1
@echo admod -b %dn% "c::!c!" "countrycode::%countrycode%"
call :quiet>nul 2>&1
:update2
set dn=!p2!
set mail=
goto :EOF
:quiet
admod -b %dn% "c::!c!" "countrycode::%countrycode%"