列出所有带有for循环的mp4文件,然后选择一个带有选项的文件



我可以用for循环在目录中列出mp4文件,根据列出的文件数量,参数会传递给choice命令。我不能做的是从用for循环创建的列表中选择一个文件?通过这种方式,我希望在另一个命令中使用选定的文件作为参数。

这是我的代码:

@echo off
setlocal enableextensions enabledelayedexpansion
set /a count = 0
echo.
for %%f in (*.mp4) do (
set /a count += 1
echo [!count!] %%f
)
for /l %%a in (1,1,%count%) do (
call set "cOpt=%%cOpt%%%%a"
)
echo.
choice /C %cOpt% /M "Select input video:"
echo %errorlevel% # selected option is shown here but no filename
endlocal
@Echo Off & SetLocal EnableExtensions
:Menu
For /F "Delims==" %%G In ('(Set File[^) 2^> NUL') Do Set "%%G="
For /F "Tokens=1,* Delims=[]" %%G In ('(Set PATHEXT^=^) ^& %__AppDir__%where.exe ".":"*.mp4" 2^> NUL ^| %__AppDir__%find.exe /N /V ""') Do Set "File[%%G]=%%~nxH" & Echo %%G. %%~nxH
If Not Defined File[1] GoTo :EOF
:Select
Set "#="
Set /P "#=Choose a file from the list by entering its item number. "
For /F "Tokens=1,* Delims==" %%G In ('(Set File[%#%]^) 2^> NUL ^| %__AppDir__%find.exe "="') Do Set "File[#]=%%H"
If Not Defined File[#] GoTo Select
:Main
Echo You chose item number %#% which was assigned to "%File[#]%" & Pause

很明显,您会将最后一行修改为所需的带有参数的命令。

如果希望包含完整路径,只需将5行的两个%%~nxH实例都更改为%%H。此外,如果您希望指定一个位置,而不是当前目录,请将同一行的"."更改为例如"Y:ourPath"

最新更新