Saltar al contenido

En un archivo .bat, ¿cómo puedo probar el espacio disponible en disco?

Solución:

Sugiero usar un script de PowerShell para eso.

wmic devuelve el tamaño en bytes, el lote está limitado a comparaciones de números de enteros de 32 bits con signo, muy por debajo de 100 GB. Primero tendría que truncar el número.

Potencia Shell

if ((Get-WMIObject Win32_Logicaldisk -filter "deviceid='C:'").FreeSpace -gt 100GB){
  "yes enough free space"
} else {
  "not enough free space"
}

Tengo que ampliar la información anterior sobre la comparación de números en lote.
Si los números están contenidos en cadenas de igual longitud, se pueden comparar válidamente como cadenas.
Una comparación de cadenas tiene lugar carácter por carácter, un espacio inicial / cero es menor que 1.

Por el momento, el tamaño más grande de los discos duros es 10TB = 10995116277760 bytes tomando 14 lugares decimales; el siguiente lote usa 15 lugares para todos los números.

@Echo off
Rem        543210987654321
Set "Blank=               "
Set "GB100=   107374182400"
Set "TB_10= 10995116277760"

for /f "tokens=2" %%A in (
  'wmic LogicalDisk Get DeviceID^,FreeSpace ^| find /i "C:"'
) Do Set "FreeSpace=%Blank%%%A"
Set "FreeSpace=%FreeSpace:~-15%"

Echo FreeSpace="%FreeSpace%"
Echo    100 GB="%GB100%"

If "%FreeSpace%" gtr "%GB100%" (
  Echo yes enough free space
) else (
  Echo not enough free space
)

Salida de muestra:

> Check-FreeSpace.cmd
FreeSpace="   101606346752"
   100 GB="   107374182400"
not enough free space

> Check-FreeSpace.cmd
FreeSpace="  1181504520192"
   100 GB="   107374182400"
yes enough free space

La forma más sencilla es mirar la última línea de dir producción

dir /-c /w C: | find "bytes free"

También puede obtener el valor del tamaño directamente al obtener 3rd token en la salida

FOR /F "tokens=3 USEBACKQ" %%F IN (`dir /-c /w C:`) DO set "size=%%F"
echo %size%

Sin embargo, no es confiable ya que la cadena puede ser diferente en otro idioma. Y también tenga en cuenta que a veces tiene mucho espacio libre pero no puede escribir más archivos porque ha alcanzado algunos límites como el tamaño máximo de archivo o la cantidad máxima de archivos en un volumen / directorio …

La forma más correcta es

wmic LogicalDisk where DeviceID='C:' Get FreeSpace /value
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *