Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: danny920825 en 15 Marzo 2014, 01:30 am



Título: [VBS][AYUDA] Montar y Desmontar particion NFTS
Publicado por: danny920825 en 15 Marzo 2014, 01:30 am
Hola a todos, me gustaria saber si es posible y de paso un norte en cuanto a lo siguiente:
tengo un PC con 3 particiones (C:\, D:\, Z:\) las 3 NTFS y en Z es donde guardo mis cosas, pero me gustaria saber si puedo crear un script que le quite automaticamente la letra a la unidad y otro que me la asigne. Ya que seria algo tedioso estar yendo al administrador de discos logicos y desmontar/montar la unidad cada vez que yo vaya a usarla.


Título: Re: [VBS][AYUDA] Montar y Desmontar particion NFTS
Publicado por: Eleкtro en 15 Marzo 2014, 12:30 pm
MSDN explica una solución a este problema utilizando el proceso "MountVol" ~> http://blogs.msdn.com/b/alejacma/archive/2010/03/17/how-to-change-drive-letters-vbscript.aspx

He modificado un poco el Snippet y he tomado parte del código para añadir el Método que desmonta la unidad (más abajo):
Código
  1. Sub ChangeDriveLetter(SourceDrive, TargetDrive)
  2.  
  3.    Set WSS = WScript.CreateObject("WScript.Shell")
  4.  
  5.    If Not Right(SourceDrive, 1) = ":" Then
  6.     SourceDrive = SourceDrive & ":"
  7.    End If
  8.    If Not Right(TargetDrive, 1) = ":" Then
  9.     TargetDrive = TargetDrive & ":"
  10.    End If
  11.  
  12.    ' Get volume associated to the old drive letter.
  13.    Set Exec  = WSS.Exec("mountvol.exe " & SourceDrive & " /L")
  14.    strVolume = Trim(Exec.StdOut.ReadLine())
  15.    while Exec.Status = 0 : WScript.Sleep(100) : Wend
  16.  
  17.    ' Unmount the drive.
  18.    Set Exec = WSS.Exec("mountvol.exe " & SourceDrive & " /D")
  19.    while Exec.Status = 0 : WScript.Sleep(100) : Wend
  20.  
  21.    ' Mount the drive on the new drive letter.
  22.    Set Exec = WSS.Exec("mountvol.exe " & TargetDrive & " " & strVolume)
  23.    while Exec.Status = 0 : WScript.Sleep(100) : Wend
  24.  
  25. End Sub

Código
  1. Sub UnmountDrive(DriveLetter)
  2.  
  3.    Set WSS = WScript.CreateObject("WScript.Shell")
  4.  
  5.    If Not Right(DriveLetter, 1) = ":" Then
  6.     DriveLetter = DriveLetter & ":"
  7.    End If
  8.  
  9.    ' Unmount the drive.
  10.    Set Exec = WSS.Exec("mountvol.exe " & DriveLetter & " /D")
  11.    while Exec.Status = 0 : WScript.Sleep(100) : Wend
  12.  
  13. End Sub


Ejemplos de uso:

Código:
ChangeDriveLetter "Z", "X"
Código:
UnmountDrive "Z"


Saludos.