如何创建在特定目录中打开随机文件夹的批处理脚本?这里的代码打印出一个随机选择的文件(我需要它来打开文件夹,而不是文件),但我无法弄清楚如何打开它。
@Echo Off
:Start
set directory="D:\Movies"
set count=0
for /f %%f in ('dir "%directory%" /b /s') do set /a count+=1
set /a randN=%random% %% %count% +1
set listN=0
for /f "tokens=1* delims=:" %%I in ('dir "%directory%" /a-d /b /s^| findstr /n /r . ^| findstr /b "%randN%"') do set filename=%%J
:Found
echo %filename%
pause
goto Start
我突然意识到我做错了什么并解决了问题。这是最终的和有效的代码:
@Echo Off
:Start
set directory="D:\Film"
set count=0
for /f %%f in ('dir "%directory%" /ad /b /s') do set /a count+=1
set /a randN=%random% %% %count% +1
set listN=0
for /f "tokens=1* delims=:" %%I in ('dir "%directory%" /ad /b /s^| findstr /n /r . ^| findstr /b "%randN%"') do set filename=%%J
:Found
%SystemRoot%\explorer.exe %filename%
exit /b
goto Start
答案 0 :(得分:1)
你真的不需要增加一个计数并使用findstr
来完成这样的任务;只需分配和sort
随机数应该:
@Echo Off
Set "source=D:\Film"
SetLocal EnableDelayedExpansion
For /D %%A In ("%source%\*") Do Set "$[!RANDOM!]=%%A"
For /F "Tokens=1* Delims==" %%A In ('"Set $[ 2>Nul|Sort"'
) Do Set "target=%%B" & GoTo Found
Exit /B
:Found
Explorer "%target%"
如果您想要递归目录搜索,请将行5
更改为:
For /D /R "%source%" %%A In (*) Do Set "$[!RANDOM!]=%%A"