2

Я пытаюсь получить список файлов в общей папке (с их полными путями)- например, вместо

File1.txt 

File2.txt

на \\sharename\foldername , я пытаюсь получить:

D:\something\foldername\File1.txt

D:\something\foldername\File2.txt

Ответ на этот вопрос («Как получить полный путь к общему ресурсу в Windows») был полезен и показывает, как получить реальные пути к общим ресурсам для дисков с помощью WMIC., Но я хотел бы пойти немного дальше для получения дополнительной информации. на файлы в общей папке. Обратите внимание: доступ к общему ресурсу будет осуществляться локально, но есть несколько букв дисков, и я пытаюсь избежать жесткого кодирования любых путей в скрипте.

2 ответа2

4

Если у вас установлен PowerShell, вы можете сделать:

get-childitem \\share\drive -Recurse| foreach-object -process { $_.FullName }
0

Удалось заставить его работать в VBscript, но PowerShell будет предпочтительнее. Я никогда раньше не работал с VBscript, так что да, это, вероятно, неэффективно и грязно.

Входными данными является \share \folder \folder, и он создает список файлов в этой папке.

    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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .