Vous pouvez éviter les virgules en utilisant /-C sur la commande DIR.
FOR /F "usebackq tokens=3" %%s IN (`DIR C:\ /-C /-O /W`) DO (
SET FREE_SPACE=%%s
)
ECHO FREE_SPACE is %FREE_SPACE%
Si vous voulez comparer l'espace disponible à l'espace nécessaire, vous pouvez faire quelque chose comme ce qui suit. J'ai spécifié le nombre avec des séparateurs de milliers, puis je les ai supprimés. Il est difficile de saisir le nombre sans virgules. Le SET /A est sympa, mais il ne fonctionne plus avec les grands nombres.
SET EXITCODE=0
SET NEEDED=100,000,000
SET NEEDED=%NEEDED:,=%
IF %FREE_SPACE% LSS %NEEDED% (
ECHO Not enough.
SET EXITCODE=1
)
EXIT /B %EXITCODE%
UPDATE :
Beaucoup de choses ont changé depuis 2014. Voici une meilleure réponse. Elle utilise PowerShell qui est disponible sur tous les systèmes Microsoft Windows actuellement pris en charge.
Le code ci-dessous serait beaucoup plus clair et facile à comprendre si le script était écrit en PowerShell sans utiliser cmd.exe comme enveloppe. Si vous utilisez PowerShell Core, modifiez les éléments suivants powershell
a pwsh
.
SET "NEEDED=100,000,000"
SET "NEEDED=%NEEDED:,=%"
powershell -NoLogo -NoProfile -Command ^
$Free = (Get-PSDrive -Name 'C').Free; ^
if ($Free -lt [int64]%NEEDED%) { exit $true } else { exit $false }
IF ERRORLEVEL 1 (
ECHO "Not enough disk space available."
) else (
ECHO "Available disk space is adequate."
)