¿Hay alguna forma de obtener la cantidad de espacio libre en disco de un disco o una carpeta en un CMD sin tener que instalar algunas aplicaciones de terceros?
Tengo un CMD que copia un archivo grande en un directorio determinado y, por supuesto, podría usar el retorno de nivel de error del comando de copia, pero luego tengo que esperar el tiempo que se tarda en copiar el archivo (por ejemplo, a ese entonces el el disco está lleno y la operación de copia falla).
Me gustaría saber antes de comenzar la copia si hay alguna idea. Probé la utilidad DU.EXE de Sysinternals, pero solo muestra el espacio ocupado.

Respuestas:
Si ejecuta "
dir c:\", la última línea le dará espacio libre en el disco.Editar: Mejor solución: "
fsutil volume diskfree c:"fuente
dir ..*(odir c:\thing\..*) mostrará una lista muy corta, ya sea que haya o no cero o muchos archivos en el directorio.Una posible solución:
una " solución más avanzada ", para Windows Xp y más allá:
La herramienta de línea de comandos de Instrumental de administración de Windows (WMIC) (Wmic.exe) puede recopilar una gran cantidad de información sobre Windows Server 2003, así como Windows XP o Vista. La herramienta accede al hardware subyacente mediante Windows Management Instrumentation (WMI). No para Windows 2000.
Como señaló Alexander Stohr en los comentarios :
dir' seguirá haciendo el trabajo),dir' depende de la configuración regional.fuente
@FOR /F "tokens=2 delims==" %%S IN ('wmic /NODE:"%COMPUTERNAME%" LogicalDisk Where ^(DriveType^="3" and DeviceID^="%some_folder:~0,2%"^) Get FreeSpace /VALUE') DO @SET freespace=%%Sfsutilnecesitaba privilegios de administrador incluso para ejecutarse, independientemente de lo que esté haciendo con él.Con este comando puede encontrar todas las particiones, tamaño y espacio libre:
wmic logicaldisk get size, freespace, captionfuente
Puede evitar las comas usando / -C en el comando DIR.
Si desea comparar el espacio disponible con el espacio necesario, puede hacer algo como lo siguiente. Especifiqué el número con un separador de miles y luego los eliminé. Es difícil captar el número sin comas. El SET / A es bueno, pero deja de funcionar con números grandes.
fuente
La siguiente secuencia de comandos le dará bytes libres en la unidad:
Tenga en cuenta que esto depende de la salida de su
dircomando, que necesita la última línea que contiene el espacio libre del formato24 Dir(s) 34,071,691,264 bytes free. Específicamente:forbucle para detectar la línea explícitamente en lugar de confiar en la configuraciónbytesfreede cada línea).tokens=bit para obtener una palabra diferente).,carácter (o puede cambiar la sustitución de coma a otra cosa).No contamina el espacio de nombres de su entorno, configurando solo la
bytesfreevariable al salir. Si sudirsalida es diferente (por ejemplo, una configuración regional o de idioma diferente), deberá ajustar el script.fuente
df.exe
Muestra todos sus discos; Capacidad total, usada y libre. Puede modificar la salida mediante varias opciones de la línea de comandos.
Puede obtenerlo en http://www.paulsadowski.com/WSH/cmdprogs.htm , http://unxutils.sourceforge.net/ o en otro lugar. Es un unix-util estándar como du.
df -hmostrará todo el espacio en disco usado y disponible de su unidad. Por ejemplo:Cygwin está disponible de forma gratuita en: https://www.cygwin.com/ Agrega muchas herramientas poderosas al símbolo del sistema. Para obtener solo el espacio disponible en la unidad M (como se asigna en Windows a una unidad compartida), se puede ingresar:
fuente
Usando la excelente solución de paxdiablo , escribí un script por lotes un poco más sofisticado, que usa la letra de la unidad como argumento entrante y verifica si la unidad existe de una manera complicada (pero no hermosa):
nota1: puede escribir una letra simple (por ejemplo, x) o puede usar x: o x: \ formato como letra de unidad en el argumento
note2: el script mostrará stderr de% chkfile% solo si el tamaño es mayor que 0
note3: guardé este script como freedisk.cmd (ver uso)
fuente
Hago una variación para generar esto desde el script:
volume C: - 49 GB total space / 29512314880 byte(s) freeUtilizo diskpart para obtener esta información.
fuente
¿Es cscript una aplicación de terceros? Sugiero probar Microsoft Scripting , donde puede usar un lenguaje de programación (JScript, VBS) para verificar cosas como Listar espacio disponible en disco .
La infraestructura de secuencias de comandos está presente en todas las versiones actuales de Windows (incluida la 2008).
fuente
cscriptes Microsoft Scripting. Es la versión de consola del intérprete de secuencias de comandos de Windows (wscriptes la versión de GUI).