Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Arrays 使用批处理,您将如何迭代不使用的数组';我不知道在每个变量上运行一个函数可能包含多少值_Arrays_Batch File_Variables_Ffmpeg_Batch Processing - Fatal编程技术网

Arrays 使用批处理,您将如何迭代不使用的数组';我不知道在每个变量上运行一个函数可能包含多少值

Arrays 使用批处理,您将如何迭代不使用的数组';我不知道在每个变量上运行一个函数可能包含多少值,arrays,batch-file,variables,ffmpeg,batch-processing,Arrays,Batch File,Variables,Ffmpeg,Batch Processing,我有一个批处理文件,创建一个从文本文件获取的变量数组,如下所示: for /f "skip=1 tokens=9 delims= " %%a in (%findfile%) do set "_%%a=yes" set count = 0 for /f "tokens=1* delims==#" %%b in ('set _') do ( set /a count+=1 set x=%%b set location[!count!]=!x:~1! ) set %locati

我有一个批处理文件,创建一个从文本文件获取的变量数组,如下所示:

for /f "skip=1 tokens=9 delims= " %%a in (%findfile%) do set "_%%a=yes"
set count = 0
for /f "tokens=1* delims==#" %%b in ('set _') do (
    set /a count+=1
    set x=%%b
    set location[!count!]=!x:~1!
)
set %location%
我试图将数组中的每个变量分别循环到一个函数中,但不知道如何操作

存储所有变量的位置数组必须被调用到for循环中,我试图将其循环到的函数是FFMPEG函数:

for %%i in (%location%\*.mp4) do (if not exist "%%~ni\" MD "%%~ni"

    ffmpeg -i "%%i" -vframes 1 -f image2 -start_number 0 
    "%%~ni\%%~ni_Summary_%%3d.jpeg"

)

非常感谢您提供的所有帮助

因为您已经有了元素计数,所以可以使用FOR/L循环

FOR /L %%n in (1 1 %count%) DO (
  set "content=!location[%%n]!"
  call :subFunc content
)
...

:subFunc
set "var=!%1!"
echo Process: !var!

set%location%
应该是
set location
。它应该显示以
位置开始的所有变量

没有(真实的)数组,它只是一堆变量。因此,您不能将整个集合添加为
%location%

这就是说:您有
%count%
中的变量数,因此您可以愉快地使用
for/L

@echo off 
SetLocal EnableDelayedExpansion
REM get locations from textfile:
for /f "tokens=9" %%a in (file.txt) do set "_%%a=yes"

REM translate into proper variables:
set count=0
for /f "tokens=1* delims==#" %%a in ('set _') do (
  set /a count+=1
  set x=%%a
  set _var[!count!]=!x:~1!
)

REM build the new bat file:
(for /l %%i in (1 1 %count%) do (
  for %%a in ("!_var[%%i]!\*.mp4") do (
    ECHO ffmpeg -i "%%i" -vframes 1 -f image2 -start_number 0 "%%~na\%%~na_Summary_%%3d.jpeg"
  )
))>new.bat

type new.bat

set count=0
应该是
set/a count=0
。目前,您正在将名为countspace的变量设置为*space*0。它通过失败而起作用<代码>计数
未定义,因此
设置/a计数+=1
计数正确。没有理由不能在第一个循环中使用
set/a count+=1&set“location[!count!]=%%a”
来生成和计算
location
数组。我是在FFMPEG FOR循环之外还是将其放在FFMPEG FOR循环内?啊!请不要将
tmp
用作变量名!这是一个预定义的变量(
temp
)new.bat是关于什么的是否要为调用的每个位置创建一个新的批处理文件?否,它正在创建一个批处理文件,包括所有
ffmpeg
命令。(注意围绕整个
for
循环的附加一对副词)