Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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
Windows 使用for循环列出所有mp4文件,并选择一个_Windows_Batch File_Cmd - Fatal编程技术网

Windows 使用for循环列出所有mp4文件,并选择一个

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

我能够在一个带有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&设置本地启用扩展 :菜单 对于/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?您还可以在第一个循环中创建已存在的选项列表…