Como obtenho uma lista de arquivos totalmente qualificada de uma pasta compartilhada?

2

Estou tentando obter uma lista de arquivos em uma pasta compartilhada (com seus nomes de caminho completos) - por exemplo, em vez de

File1.txt 

File2.txt

em \sharename\foldername , estou tentando obter:

D:\something\foldername\File1.txt

D:\something\foldername\File2.txt

A resposta para essa pergunta (Como obter o caminho completo de um compartilhamento no Windows) foi útil e mostra como obter os caminhos de unidade reais para compartilhamentos usando o WMIC., mas gostaria de ir um pouco mais adiante para ver mais informações sobre os arquivos dentro do compartilhamento. Observação: o compartilhamento será acessado localmente, mas há várias letras de unidade e estou tentando evitar codificar quaisquer caminhos em um script.

    
por Emily 26.10.2011 / 22:14

2 respostas

4

Se você tem o PowerShell instalado, você pode fazer:

get-childitem \share\drive -Recurse| foreach-object -process { $_.FullName }
    
por 26.10.2011 / 22:59
0

Gerenciado para trabalhar no VBscript, mas o powershell seria preferido. Eu nunca trabalhei com VBscript antes, então sim, provavelmente é ineficiente e confuso.

A entrada é \ share \ folder \ folder e cria uma lista de arquivos nessa pasta.

    Dim Arg 
    Set Arg = WScript.Arguments

    strPath = WScript.Arguments(0)
    strPath = Replace(strPath, "\", "")
    arrPath = Split(strPath, "\")
    strComputer = arrPath(0)
    strShare = arrPath(1)
    strFolder = arrPath(2)

    strPath0 = WScript.Arguments(0)
    sDate = Replace(Date, "/", "-") 
    filename = strPath0 & "\BackupFileList-" & sDate & ".txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.CreateTextFile(filename, ForAppending, True)

    Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_Share Where Name = '" & strShare & "'")

    For Each objItem in colItems
    dirPath =  objItem.Path
    Next

    Set folder = objFSO.GetFolder(WScript.Arguments(0))
    Set files = folder.Files

    For each folderIdx In files
        objTextFile.WriteLine(dirPath & "\" & strFolder & "\" & folderIdx.Name)
      Next
      objTextFile.Close
    
por 27.10.2011 / 17:21