j'ai posté trop vite c'est finalement ce que j'ai fait :
voilà le code BATCH pour ceux que ca interesse.
@echo off
setlocal enabledelayedexpansion
call :luhn NUMERO_DE_CARTE
exit /b 0
:luhn
set input=%1
set cnt=0
set s1=0&set s2=0
:digit_loop
set /a cnt-=1
set /a isOdd=^(-%cnt%^)%%2
if !isodd! equ 1 (
set /a s1+=!input:~%cnt%,1!
) else (
set /a twice=!input:~%cnt%,1!*2
if !twice! geq 10 (
set /a s2+=!twice:~0,1!+!twice:~1,1!
) else (
set /a s2+=!twice!
)
)
if "!input:~%cnt%!"=="!input!" (
set /a sum=^(!s1!+!s2!^)%%10
if !sum! equ 0 (echo > report.txt Carte Valide) else (echo > report.txt carte Invalide)
goto :EOF
)
goto digit_loop