共有フォルダ上のファイルのリスト(完全なパス名を含む)を取得しようとしています-たとえば、代わりに
File1.txt
File2.txt
オン \\sharename\foldername
、私は取得しようとしています:
D:\something\foldername\File1.txt
D:\something\foldername\File2.txt
この質問 (Windowsで共有の完全修飾パスを取得する方法)への回答は役に立ち、WMICを使用して共有の実際のドライブパスを取得する方法を示していますが、共有内のファイルの詳細については、もう少し進んでください。注-共有はローカルでアクセスされますが、複数のドライブ文字があり、スクリプト内のパスをハードコーディングしないようにしています。
PowerShellがインストールされている場合は、次のことができます。
get-childitem \\share\drive -Recurse| foreach-object -process { $_.FullName }
なんとか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