Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何从文件夹列表中随机选择文件夹?_Vb.net_.net - Fatal编程技术网

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
。不幸的是,我在给她发代码时发现了这一点