114 votes

Espace libre dans un shell CMD

Existe-t-il un moyen d'obtenir la quantité d'espace disque libre d'un disque ou d'un dossier dans un CMD sans avoir à installer des applications tierces ?

J'ai un CMD qui copie un gros fichier dans un répertoire donné et je pourrais bien sûr utiliser le retour du niveau d'erreur de la commande de copie, mais je dois alors attendre le temps qu'il le temps qu'il faut pour copier le fichier (par exemple...jusqu'à ce que le disque soit plein et que l'opération de copie échoue).

J'aimerais savoir avant de commencer la copie si c'est une idée quelconque. J'ai essayé l'utilitaire DU.EXE de Sysinternals, mais il ne montre que l'espace occupé.

139voto

Nico Points 5756

Si vous exécutez " dir c:\ ", la dernière ligne vous donnera l'espace disque libre.

Editar: Une meilleure solution : " fsutil volume diskfree c: "

57voto

VonC Points 414372

Une solution possible :

dir|find "bytes free"

un plus " solution avancée ", pour Windows Xp et au-delà :

wmic /node:"%COMPUTERNAME%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "c:"

El Ligne de commande de Windows Management Instrumentation (WMIC), l'outil (Wmic.exe) peut rassembler de grandes quantités d'informations sur un Windows Server 2003 ainsi que sur un Windows XP ou Vista. L'outil accède au matériel sous-jacent en utilisant Windows Management Instrumentation (WMI). Pas pour Windows 2000.


Comme l'a noté Alexander Stohr dans les commentaires :

  • WMIC peut également voir les restrictions basées sur les politiques. (même si ' dir fera toujours l'affaire),
  • ' dir dépend de la locale.

12voto

Dewsri De Mel Points 121

En utilisant cette commande, vous pouvez trouver toutes les partitions, leur taille et leur espace libre : wmic logicaldisk get size, freespace, caption

9voto

Paul Points 99

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."
)

8voto

tommym Points 1802

Df.exe

Affiche tous vos disques ; capacité totale, utilisée et libre. Vous pouvez modifier la sortie par diverses options de ligne de commande.

Vous pouvez l'obtenir auprès de http://www.paulsadowski.com/WSH/cmdprogs.htm , http://unxutils.sourceforge.net/ ou ailleurs. C'est un utilitaire standard d'unix comme du.

df -h affichera tout l'espace disque utilisé et disponible de votre disque. Par exemple :

M:\>df -h
Filesystem      Size  Used Avail Use% Mounted on
C:/cygwin/bin   932G   78G  855G   9% /usr/bin
C:/cygwin/lib   932G   78G  855G   9% /usr/lib
C:/cygwin       932G   78G  855G   9% /
C:              932G   78G  855G   9% /cygdrive/c
E:              1.9T  1.3T  621G  67% /cygdrive/e
F:              1.9T  201G  1.7T  11% /cygdrive/f
H:              1.5T  524G  938G  36% /cygdrive/h
M:              1.5T  524G  938G  36% /cygdrive/m
P:               98G   67G   31G  69% /cygdrive/p
R:               98G   14G   84G  15% /cygdrive/r

Cygwin est disponible gratuitement à partir de : https://www.cygwin.com/ Il ajoute de nombreux outils puissants à l'invite de commande. Pour obtenir uniquement l'espace disponible sur le lecteur M (tel qu'il est mappé dans Windows sur un lecteur partagé), on peut entrer :

M:\>df -h | grep M: | awk '{print $4}'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X