Windows 使用for循环列出所有mp4文件,并选择一个
我能够在一个带有for循环的目录中列出mp4文件,并且根据列出的文件数量,会向choice命令传递一个参数。我不能做的是从使用for循环创建的列表中选择一个文件?这样,我希望在另一个命令中使用所选文件作为参数 这是我的代码:Windows 使用for循环列出所有mp4文件,并选择一个,windows,batch-file,cmd,Windows,Batch File,Cmd,我能够在一个带有for循环的目录中列出mp4文件,并且根据列出的文件数量,会向choice命令传递一个参数。我不能做的是从使用for循环创建的列表中选择一个文件?这样,我希望在另一个命令中使用所选文件作为参数 这是我的代码: @echo off setlocal enableextensions enabledelayedexpansion set /a count = 0 echo. for %%f in (*.mp4) do ( set /a count += 1 echo [!co
@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&设置本地启用扩展
:菜单
对于/F Delims==%%G In'设置文件[^2^>num'执行设置%%G=
对于/F令牌=1,*Delims=[]%G在'Set-PATHEXT^=^^&%\uuuu-AppDir\uuuuu%where.exe:*.mp4 2^>NUL^ |%\uuuu-AppDir\uuuuu%find.exe/N/V'Do-Set文件[%%%G]=%~nxH&Echo%%G.%%~nxH
如果未定义文件[1]转到:EOF
:选择
设置=
Set/P=通过输入项目编号从列表中选择文件。
对于/F令牌=1,*Delims==%%G在“设置文件[%%]^2^>NUL^ |%\uuuuuuAppDir\uuuuu%find.exe='Do Set File[]=%%H中
如果未定义文件[]转到选择
:Main
Echo您选择了分配给%File[]%的项目编号%&暂停
显然,您需要修改最后一行,使其成为带有参数的必需命令
如果您希望包含完整路径,只需将第5行的%%~nxH的两个实例更改为%%H。此外,如果您希望指定位置,而不是当前目录,请将同一行的更改为,例如Y:\our\Path。最简单的方法是再次对%%f循环执行相同的操作,但不要重复,而是检查!count!equals!errorevel!,则您拥有所选文件。或者,您可以将文件名存储在伪数组变量中,如set name[!count!]=%%f,然后通过访问%%I in!ErrorLevel!do echo!name[%%I]!.顺便问一下,当set cOpt=!cOpt!%%a更简单时,为什么要使用调用集cOpt=%%cOpt%%%a?您还可以在第一个循环中创建已存在的选项列表…