Ваша непосредственная проблема - попытка использовать SET / A, когда в вашем значении есть запятые.
Вам также необходимо удалить пробелы до и после = при определении размера gbsize.
Iне понимаю, почему у вас есть endlocal без setlocal
Я думаю, это то, что вы искали.Он будет отображать «привет», если свободного места меньше 1 ГБ.
@echo off
setlocal
set gbsize=1,073,741,824
Set gbsize=%gbsize:,=%
for /f "tokens=3" %%a in ('dir c:\') do set bytesfree=%%a
set bytesfree=%bytesfree:,=%
If %gbsize% gtr %bytesfree% echo hi
Другой, более прямой и (возможно, более точный?) Способ получить свободное пространство
for /f "tokens=2" %%S in ('wmic volume get DriveLetter^, FreeSpace^|find "C:"') do set bytesfree=%%S