Eu acho que %%~z
só funciona para arquivos, não para variáveis. Então, escreva o conteúdo da variável em um arquivo e obtenha o tamanho do arquivo.
E sobre isso:
@echo off
set aaa=asdf
:: Write variable to file
set tmpfile=%TEMP%\%RANDOM%
echo %aaa%> %tmpfile%
:: Determine filesize, subtract 2 bytes for newline
for /F "usebackq" %%a in ('%tmpfile%') do set /a size=%%~za - 2
del %tmpfile%
echo Size: %size%