Ahora que lo veo el fallo real del script está en basarlo un poco en trucos de la programación o caracteres que como vemos no funcionan en todas la máquinas.
Es infinitamente mejor la lógica. Esto no puede fallar:
@ECHO OFF
:BUCLE
CLS & ECHO.
SET /p "PASS=INTRODUCE SOLO SEIS CARACTERES:";
SET SW=######%PASS%
SET SW=%SW:~-6%
IF %SW% NEQ %PASS% GOTO:BUCLE
ECHO. & ECHO SW:[%SW%] PASS: [%PASS%] & PAUSE
) || (GOTO:BUCLE)
REM SET SW=%PASS:~0,-6%
A ver, las expresiones regulares no son "trucos de programación", si así lo quieres ver es tu problema, y funcionan en donde sea, están totalmente probadas y funcionan, y no hay que recurrir a una solución artesanal, es mejor usar una expresión regular para este caso:
C:\Windows\system32>echo hola12 | findstr /r /b ^.......$ && echo ok || echo mal
hola12
ok
C:\Windows\system32>echo hola123 | findstr /r /b ^.......$ && echo ok || echo mal
mal
C:\Windows\system32>echo 123456 | findstr /r /b ^.......$ && echo ok || echo mal
123456
ok
C:\Windows\system32>echo 12345 | findstr /r /b ^.......$ && echo ok || echo mal
mal
C:\Windows\system32>echo lalalax | findstr /r /b ^.......$ && echo ok || echo mal
mal
C:\Windows\system32>echo lalala | findstr /r /b ^.......$ && echo ok || echo mal
lalala
ok
C:\Windows\system32>
A ver, dime, ¿qué problema hay con la lógica ahí?