One method that may work is below. And I kept it under 200 lines
Bill

code:

$Time = @TIME
$ClkHr = VAL (SUBSTR ($Time, 1, 2)) ; REM ** Parse HOUR value
$ClkMin = VAL (SUBSTR ($Time, 4, 2)) ; REM ** Parse MINUTE value


$Bias = READVALUE ("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation", "ActiveTimeBias")
$Name = READVALUE ("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation", "StandardName")
$GmtVal = READVALUE ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones\$Name", "Display")


; REM ** Clock set to adjust for DayLight Savings Time.
IF ($Bias <> "0")
$BiasVal = VAL ("$Bias")
$OffSet = SUBSTR ("$GmtVal", 5, 1) ; REM ** Does local clock add or subtract time from GMT?
IF ($OffSet <> "+") AND ($OffSet <> "-")
? "Time zone is already Greenwich Mean Time"
GOTO EndScript
ENDIF
ENDIF


SELECT
CASE ($BiasVal = "+780") OR ($BiasVal = "-780") $AdjHr = 13 $AdjMin = 0 ; REM ** Plus/minus 13 hours
CASE ($BiasVal = "+720") OR ($BiasVal = "-720") $AdjHr = 12 $AdjMin = 0 ; REM ** Plus/minus 12 hours
CASE ($BiasVal = "+660") OR ($BiasVal = "-660") $AdjHr = 11 $AdjMin = 0 ; REM ** Plus/minus 11 hours
CASE ($BiasVal = "+600") OR ($BiasVal = "-600") $AdjHr = 10 $AdjMin = 0 ; REM ** Plus/minus 10 hours
CASE ($BiasVal = "+570") OR ($BiasVal = "-570") $AdjHr = 9 $AdjMin = 30 ; REM ** Plus/minus 9 hours, 30min
CASE ($BiasVal = "+540") OR ($BiasVal = "-540") $AdjHr = 9 $AdjMin = 0 ; REM ** Plus/minus 9 hours
CASE ($BiasVal = "+480") OR ($BiasVal = "-480") $AdjHr = 8 $AdjMin = 0 ; REM ** Plus/minus 8 hours
CASE ($BiasVal = "+450") OR ($BiasVal = "-450") $AdjHr = 7 $AdjMin = 30 ; REM ** Plus/minus 7 hours, 30min
CASE ($BiasVal = "+420") OR ($BiasVal = "-420") $AdjHr = 7 $AdjMin = 0 ; REM ** Plus/minus 7 hours
CASE ($BiasVal = "+390") OR ($BiasVal = "-390") $AdjHr = 6 $AdjMin = 30 ; REM ** Plus/minus 6 hours, 30min
CASE ($BiasVal = "+360") OR ($BiasVal = "-360") $AdjHr = 6 $AdjMin = 0 ; REM ** Plus/minus 6 hours
CASE ($BiasVal = "+345") OR ($BiasVal = "-345") $AdjHr = 5 $AdjMin = 45 ; REM ** Plus/minus 5 hours, 45min
CASE ($BiasVal = "+330") OR ($BiasVal = "-330") $AdjHr = 5 $AdjMin = 30 ; REM ** Plus/minus 5 hours, 30min
CASE ($BiasVal = "+300") OR ($BiasVal = "-300") $AdjHr = 5 $AdjMin = 0 ; REM ** Plus/minus 5 hours
CASE ($BiasVal = "+270") OR ($BiasVal = "-270") $AdjHr = 4 $AdjMin = 30 ; REM ** Plus/minus 4 hours, 30min
CASE ($BiasVal = "+240") OR ($BiasVal = "-240") $AdjHr = 4 $AdjMin = 0 ; REM ** Plus/minus 4 hours
CASE ($BiasVal = "+210") OR ($BiasVal = "-210") $AdjHr = 3 $AdjMin = 30 ; REM ** Plus/minus 3 hours, 30min
CASE ($BiasVal = "+180") OR ($BiasVal = "-180") $AdjHr = 3 $AdjMin = 0 ; REM ** Plus/minus 3 hours
CASE ($BiasVal = "+150") OR ($BiasVal = "-150") $AdjHr = 2 $AdjMin = 30 ; REM ** Plus/minus 2 hours, 30min
CASE ($BiasVal = "+120") OR ($BiasVal = "-120") $AdjHr = 2 $AdjMin = 0 ; REM ** Plus/minus 2 hours
CASE ($BiasVal = "+60") OR ($BiasVal = "-60") $AdjHr = 1 $AdjMin = 0 ; REM ** Plus/minus 1 hour
CASE ($BiasVal = "+0") OR ($BiasVal = "-0") $AdjHr = 0 $AdjMin = 0 ; REM ** Plus/minus 0 hours
ENDSELECT


IF ($OffSet = "-")
IF ($AdjMin > $ClkMin) $GmtMin = 60 - ($AdjMin - $ClkMin) $AdjHr = $AdjHr + 1
ELSE $GmtMin = ($ClkMin - $AdjMin)
ENDIF
IF ($AdjHr > $ClkHr) $GmtHr = 24 - ($AdjHr - $ClkHr)
ELSE $GmtHr = ($ClkHr - $AdjHr)
ENDIF
ELSE
IF ($AdjMin + $ClkMin) > 60 $GmtMin = 60 - ($AdjMin + ClkMin) $AdjHr = $AdjHr - 1
ELSE $GmtMin = ($AdjMin + ClkMin)
ENDIF
IF ($AdjHr + $ClkHr) > 24 $GmtHr = 24 - ($AdjHr + $ClkHr)
ELSE $GmtHr = ($AdjHr + $ClkHr)
ENDIF
ENDIF


:EndScript