我想制作一个.bat
文件,该文件将在随机文件夹/子文件夹中的第一个文件中打开与该文件相同的位置.bat
。
我目前拥有的代码仅打开一个随机文件。
@echo off
setlocal enableextensions disabledelayedexpansion
set "rootFolder=G:\Movies\Anime"
for /f "usebackq tokens=1,* delims=:" %%a in (`
cmd /q /v /e /c "for /f delims^= %%a in ('dir /a-d /s /b "%rootFolder%"') do echo(!random!:%%a"
^| sort 2^>nul
^| cmd /q /e /v /c "set /p ".^=" & echo(!.!"
`) do start "" "%%~b"
我也有一个.bat
文件,该文件生成一个文本文件,其中包含同一位置的所有文件夹的列表。我不确定是否更容易引用它。
dir /b > Animelist.txt
另外,如果可能的话,如何排除它打开特定类型的文件,例如jpegs /其他.bat
文件?
你可以尝试一下
@echo off
setlocal enableextensions disabledelayedexpansion
set "rootFolder=%cd%"
set fileTypes= "*.avi" "*.mpeg" "*.mkv"
pushd "%rootFolder%" && (
for /f "usebackq tokens=1,* delims=:" %%a in (`
cmd /q /v /e /c "set p=&for /r %%a in (%fileTypes%) do if not !f!==%%~dpa (set f=%%~dpa&set /a ((%random% %% 16273^)+1^)*!random!&echo :%%~dpa)"
^| sort 2^>nul
^| cmd /q /e /v /c "set /p ".^=" && echo(!.!"
`) do pushd "%%~b." && (
for /f "delims=" %%c in ('
dir /b /a-d /on %fileTypes% 2^>nul
^| cmd /q /e /v /c "set /p ".^=" && echo(!.!"
') do start "" "%%~fc"
popd
)
popd
)
分解任务
set
)pushd
)
cmd
在内部for /f
if
在first内cmd
)set /a
),然后输出文件夹(echo
)sort
)上的列表进行排序cmd
位于的第二个位置for /f %%a
)delims
和tokens
中的原因for /f %%a
)pushd
)
dir
)内列出指定类型的文件cmd
)for /f %%c
)start
)popd
)popd
)本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句