none
Criar mapeamento no primeiro drive disponivel. RRS feed

  • Pergunta

  • Olá!

    Gostaria de saber como mapear um drive de rede com a primeira letra disponível e saber qual é essa letra, através de uma script vbscript.

    Grato,


    segunda-feira, 25 de novembro de 2013 12:53

Respostas

  • Dá uma olhada nesta função:

    wscript.echo ProximoDriveDisponivel("")
    wscript.echo ProximoDriveDisponivel("C:")
    
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    WshNetwork.MapNetworkDrive ProximoDriveDisponivel("C:"), "\\Server\Public"
    
    function ProximoDriveDisponivel(strCheca_a_partir)
    
    	'Se a variavel for igual a "" então começão do A:
    	if strCheca_a_partir="" then strCheca_a_partir = "A"
    	
    	'Pega código asc da primeira letra a ser checada
    	iInicio = asc(ucase(left(strCheca_a_partir,1)))
    
    	'Monta string com todos os drives utilizados no momento
    	strComputer = "."
    	Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" _
    		& strComputer & "\root\cimv2")
    	Set colDisks = objWMIService.ExecQuery _
    		("Select * from Win32_LogicalDisk")
    	For Each objDisk in colDisks
    		strListaDrives = strListaDrives & objDisk.DeviceID
    	next
    
    	wscript.echo strListaDrives
    	
    	'Descobrir qual não é usado
    	for letra=iInicio to 90
    		strDriveLetter = chr(letra)
    
    		if instr(strListaDrives,strDriveLetter)=0 then
    			ProximoDriveDisponivel=strDriveLetter
    			exit for
    		end if
    		
    	next
    
    end function
    

    Fiz aqui rapidinho, testa aí.


    Fábio de Paula Junior

    segunda-feira, 25 de novembro de 2013 14:00
    Moderador

Todas as Respostas

  • Dá uma olhada nesta função:

    wscript.echo ProximoDriveDisponivel("")
    wscript.echo ProximoDriveDisponivel("C:")
    
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    WshNetwork.MapNetworkDrive ProximoDriveDisponivel("C:"), "\\Server\Public"
    
    function ProximoDriveDisponivel(strCheca_a_partir)
    
    	'Se a variavel for igual a "" então começão do A:
    	if strCheca_a_partir="" then strCheca_a_partir = "A"
    	
    	'Pega código asc da primeira letra a ser checada
    	iInicio = asc(ucase(left(strCheca_a_partir,1)))
    
    	'Monta string com todos os drives utilizados no momento
    	strComputer = "."
    	Set objWMIService = GetObject("winmgmts:" _
    		& "{impersonationLevel=impersonate}!\\" _
    		& strComputer & "\root\cimv2")
    	Set colDisks = objWMIService.ExecQuery _
    		("Select * from Win32_LogicalDisk")
    	For Each objDisk in colDisks
    		strListaDrives = strListaDrives & objDisk.DeviceID
    	next
    
    	wscript.echo strListaDrives
    	
    	'Descobrir qual não é usado
    	for letra=iInicio to 90
    		strDriveLetter = chr(letra)
    
    		if instr(strListaDrives,strDriveLetter)=0 then
    			ProximoDriveDisponivel=strDriveLetter
    			exit for
    		end if
    		
    	next
    
    end function
    

    Fiz aqui rapidinho, testa aí.


    Fábio de Paula Junior

    segunda-feira, 25 de novembro de 2013 14:00
    Moderador
  • Bom dia Fábio!

    Estou precisando do mesmo caso mas não é necessário informar qual está disponível, apenas precisa mapear aquela única pasta na primeira letra disponível.

    Com o de cima eu não obtive sucesso, ele da erro na hora de fazer o mapeamento. 

    quinta-feira, 10 de julho de 2014 14:36