vb.net を使用して既存のランダムなディレクトリ名 (C:\ ドライブ) を選択し、その場所を変数に格納する方法を知っている人を教えてください。
私はこれをググる必要がありましたが、フォルダーではなくファイルに関連する例しか見つけることができないようです
これを試してみてください。これがあなたの要件に合っていることを願っています。
'----------------- Global Variables
Dim xCnter = 0
Dim xRndNo = 0
Dim xSubdirectory As String
Private Sub Basement()
Dim xGenerator As System.Random = New System.Random()
xRndNo = xGenerator.Next(1, 100)
AssignRndDirectory("C:\")
msgbox(subdirectory)
End Sub
Private Sub AssignRndDirectory(xPath as string)
For Each subdirectory In Directory.GetDirectories(xPath)
if xCnter = xRndNo then Exit sub
xCnter += 1
call AssignRndDirectory(subdirectory)
Next
End Sub
[注: このコードは IDE でテストされていません。何かエラーが発生した場合は教えてください。]
編集: TESTED WITH IDE
Dim xCnter = 0
Dim xRndNo = 0
Dim xSubdirectory As String
Private Sub Basement()
Dim xGenerator As System.Random = New System.Random()
xRndNo = xGenerator.Next(1, 100)
AssignRndDirectory("C:\")
MsgBox(xSubdirectory)
xCnter = 0
End Sub
Private Sub AssignRndDirectory(ByVal xPath As String)
Try
For Each Subdirectory In Directory.GetDirectories(xPath)
If xCnter = xRndNo Then Exit Sub
xSubdirectory = Subdirectory
xCnter += 1
Call AssignRndDirectory(Subdirectory)
Next
Catch ex As Exception
Exit Sub
End Try
End Sub
ディレクトリのリストを作成し、そこからランダムに項目を選択するだけです。
Dim rnd As New Random()
Dim path As String = "C:\"
Dim dir = New DirectoryInfo(path)
Dim subDirs = dir.GetDirectories()
Dim randomDir = subdirs(rnd.[Next](subDirs.Length))
または、Linq を好む場合は、最後の行を次のようにすることができます。
Dim randomDirectory = subdirs.Skip(rnd.[Next](subdirs.Length)).First()