Vb.net 如何从文件夹列表中随机选择文件夹?
我想从指定的目录中获取一个随机目录,例如桌面 我不知道该怎么做,这也是我申请时遇到的唯一问题Vb.net 如何从文件夹列表中随机选择文件夹?,vb.net,.net,Vb.net,.net,我想从指定的目录中获取一个随机目录,例如桌面 我不知道该怎么做,这也是我申请时遇到的唯一问题 例如,我在桌面上有5个不同的目录,叫做 Dir1 Dir2 Dir3等等 我想得到Dir3,然后可能是Dir1,之后可能是Dir3,等等。我想从桌面上获得一个随机目录…我真的不知道如何更好地解释它 指定的目录-例如,我在文本框中指定的目录。或文件夹浏览器对话框 而且我只想得到目录的路径,我不想对它做任何事情 如果有人能提供一些信息,我将不胜感激 谢谢大家 真有趣!:-D 只需将父文件夹更改为要扫描的文件
例如,我在桌面上有5个不同的目录,叫做 Dir1 Dir2 Dir3等等 我想得到Dir3,然后可能是Dir1,之后可能是Dir3,等等。我想从桌面上获得一个随机目录…我真的不知道如何更好地解释它 指定的目录-例如,我在文本框中指定的目录。或文件夹浏览器对话框 而且我只想得到目录的路径,我不想对它做任何事情 如果有人能提供一些信息,我将不胜感激 谢谢大家 真有趣!:-D 只需将父文件夹更改为要扫描的文件夹即可 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
真有趣-D
只需将父文件夹更改为要扫描的文件夹即可
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
这种闻起来像是家庭作业。但我还有时间消磨。下面的函数将路径作为字符串,并将随机子文件夹作为字符串返回
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
这种闻起来像是家庭作业。但我还有时间消磨。下面的函数将路径作为字符串,并将随机子文件夹作为字符串返回
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
你能把你的问题修改得更具体些吗?“桌面上的随机目录”(或任何其他指定目录)是什么意思?“获取目录”(在任何位置)是什么意思-读取、创建、写入。。。?不清楚你想做什么,所以很难给你答案。例如,我在桌面上有5个不同的目录,叫做Dir1 Dir2 Dir3,等等。。。我想得到Dir3,然后可能是Dir1,之后可能是Dir3,等等。我想从桌面上获得一个随机目录…我真的不知道如何更好地解释它。。。指定的目录-例如,我在文本框中指定的目录。而且我只想得到目录的路径,我不想对它做任何事情。谢谢:)那么“我如何从文件夹列表中选择一个随机文件夹?”或者“从随机字符串数组中选择一个字符串”(这将是文件夹的路径)呢?它们是否在桌面上并不重要;从你拥有的几个文件夹列表中随机获得一个文件夹很重要?好吧,我会更改标题。你是对的,这就是我想做的。它不一定是桌面,但我想能够选择我从哪个目录获得随机文件夹路径,这就是为什么我使用桌面为例。你能编辑你的问题更具体吗?“桌面上的随机目录”(或任何其他指定目录)是什么意思?“获取目录”(在任何位置)是什么意思-读取、创建、写入。。。?不清楚你想做什么,所以很难给你答案。例如,我在桌面上有5个不同的目录,叫做Dir1 Dir2 Dir3,等等。。。我想得到Dir3,然后可能是Dir1,之后可能是Dir3,等等。我想从桌面上获得一个随机目录…我真的不知道如何更好地解释它。。。指定的目录-例如,我在文本框中指定的目录。而且我只想得到目录的路径,我不想对它做任何事情。谢谢:)那么“我如何从文件夹列表中选择一个随机文件夹?”或者“从随机字符串数组中选择一个字符串”(这将是文件夹的路径)呢?它们是否在桌面上并不重要;从你拥有的几个文件夹列表中随机获得一个文件夹很重要?好吧,我会更改标题。你是对的,这就是我想做的。它不一定是桌面,我想能够选择我从哪个目录获得随机文件夹路径,这就是为什么我使用桌面为例。这对批处理很好,我在批处理中编码,所以我会记得,但这是VB:PLOL!今天我回答了太多批量问题-这对批处理很好,我在批处理中编写代码,所以我会记住这一点,但这是对VB:PLOL的!今天我回答了太多批量问题-我喜欢这个答案,因为你用了
Static
作为Random
的实例(我不知道为什么c没有这个功能),并且你做了一些相当不错的错误处理。不过,我建议,SubFolders.Count=0
测试可能会返回Nothing
,而不是抛出异常,因为这不是真正的异常情况。第一个例外是例外。答案很好。@Enigmativity,我完全同意第二个异常应该在现实世界中返回Nothing
。不幸的是,我发现当我像这样在这里发布代码时,我们最终会解决为什么“它不工作”的问题,在几篇文章之后,我们发现他们得到了一个NRE,然后在更多的its之后,因为他们没有清理他们的输入。所以我放弃了,我的代码在这里抛出异常,并清楚地解释了问题所在。我喜欢这个答案,因为您使用了Static
作为Random
的实例(我不知道为什么c没有这个功能),并且您已经做了一些相当不错的错误处理。不过,我建议,SubFolders.Count=0
测试可能会返回Nothing
,而不是抛出异常,因为这不是真正的异常情况。第一个例外是例外。答案很好。@Enigmativity,我完全同意第二个异常应该在现实世界中返回Nothing
。不幸的是,我在给她发代码时发现了这一点