no es por medio del dos pero espero te sirva:
4.- GetVolumeInformation: volumen de un disco (sólo 32 bits)
Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Ejemplo para leer el volumen de un disco, esta función se puede usar para ¡catalogar los CD's musicales!
Dim lVSN As Long, n As Long, s1 As String, s2 As String
s1=String$(255,Chr$(0))
s2=String$(255,Chr$(0))
l= GetVolumeInformation("unidad", s1, Len(s1), lVSN, 0, 0, s2, Len(s2))
'lVSN tendrá el valor del Volume Serial Number (número de serie del volumen)
Si "unidad" es el CD-ROM y tenemos un disco de música, podemos usar el VSN para hacer un catálogo de CD's ya que cada CD tiene un número diferente.
(lo saque de la pagina del guille)
esta es otra forma,
Cómo lanzar síncronamente comandos de MS-DOS
_______________________________________________
Aplicable a Microsoft Visual Basic 4, Visual Basic 5, Visual Basic 6
A veces interesa lanzar comandos MS-DOS desde Visual Basic y esperar a que éstos acaben. Una situación habitual es lanzar ficheros por lotes (.BAT), o comandos "net XXX", que realizan exploración por distintos servidores en la red y que pueden tardar varios segundos en se