如何从文件夹列表中选择随机文件夹?

时间:2011-08-30 23:42:02

标签: vb.net .net

我想从指定的目录中获取一个随机目录,例如桌面。

我不知道如何做到这一点,这是我唯一遇到的问题

例如,我在桌面上有5个不同的目录,名为

Dir1中 DIR2 Dir3等...

我想获得Dir3,然后可能是Dir1,之后可能再次使用Dir3,依此类推。我想从桌面上获得一个随机目录......真的不知道如何更好地解释它......

指定的目录 - 我指定的目录可能在文本框中。或文件夹浏览器对话框

我也想获取目录的路径,我不想对它做任何事情。

如果有人能提供一些信息,我将非常感激:D

谢谢大家!

2 个答案:

答案 0 :(得分:2)

这种气味对我来说就像是家庭作业。但我有时间杀人。下面的函数将路径作为字符串,并将随机子文件夹作为字符串返回。

Public Function GetRandomSubFolder(path As String) As String
    ''//Static create a Random object so that we do not create a new one each time
    Static R As New Random()

    ''//Sanity check
    If Not System.IO.Directory.Exists(path) Then Throw New System.IO.DirectoryNotFoundException("path")

    ''//Get the subfolders as an array
    Dim SubFolders = System.IO.Directory.GetDirectories(path)

    ''//Sanity check
    If SubFolders.Count = 0 Then Throw New ApplicationException("Could not find any subfolders")


    ''//Get a random number. The second parameter is exclusive so (0,4) will always return 3 as a maximum
    Dim RandomIndex As Integer = R.Next(0, SubFolders.Count)

    ''//Return the path at that index
    Return SubFolders(RandomIndex)
End Function

答案 1 :(得分:1)

这很有趣! :-D

只需将ParentFolder更改为您要扫描的文件夹即可。

<强> RandomFolder.bat

@Echo Off
Set ParentFolder=C:\Users\Me\Desktop
Set List=
For /F "tokens=* delims=" %%d In ('Dir /b /ad "%ParentFolder%"') Do Call :AddToList "%%d"
Set FolderCount=0
Call :CountFolders %List%
Set /a FolderIndex=%Random% %% %FolderCount%
Call :SelectRandomFolder %List%
Echo %RandomFolder%
Exit /B

:AddToList
Set List=%List% %1
Exit /B

:CountFolders
Shift
If "%~1"=="" Exit /B
Set /a FolderCount=%FolderCount% + 1
Goto :CountFolders

:SelectRandomFolder
Set RandomFolder=%~1
If %FolderIndex%==0 Exit /B
Set /a FolderIndex=%FolderIndex% - 1
Shift
Goto :SelectRandomFolder