gpt4 book ai didi

arrays - 使用批处理,您将如何遍历一个您不知道它可能包含多少个值的数组以在每个单独的变量上运行一个函数

转载 作者:行者123 更新时间:2023-12-04 02:05:22 27 4
gpt4 key购买 nike

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

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%

我试图让数组中的每个变量分别循环到一个函数中,但不知道该怎么做!!

存储所有变量的 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"

)

所有帮助将不胜感激

最佳答案

set %location% 应该是 set location。它应该显示所有以 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

关于arrays - 使用批处理,您将如何遍历一个您不知道它可能包含多少个值的数组以在每个单独的变量上运行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com