web-dev-qa-db-ja.com

共有フォルダーから完全修飾ファイルリストを取得するにはどうすればよいですか?

共有フォルダ上のファイルのリスト(完全なパス名を含む)を取得しようとしています-たとえば、代わりに

File1.txt 

File2.txt

オン \\sharename\foldername、私は取得しようとしています:

D:\something\foldername\File1.txt

D:\something\foldername\File2.txt

この質問 (Windowsで共有の完全修飾パスを取得する方法)への回答は役に立ち、WMICを使用して共有の実際のドライブパスを取得する方法を示していますが、共有内のファイルの詳細については、もう少し進んでください。注-共有はローカルでアクセスされますが、複数のドライブ文字があり、スクリプト内のパスをハードコーディングしないようにしています。

2
Emily

PowerShellがインストールされている場合は、次のことができます。

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

なんとか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
0
Emily