1

我正在尝试编写看似简单的脚本,但我无法弄清楚。

基本上,用户会被问到问题 1:“他们想要添加多少(在这种情况下)视频文件以创建 1 个大视频文件?”

然后用户会被问到问题 2:“您要添加在一起的文件的名称是什么?” 现在这是我遇到的问题...

如何创建一个 for 循环,询问问题 2 第一个问题中给出的次数并将每个答案保存为唯一变量(我猜是变量递减)

在我从用户那里获得所有正确的文件名之后,程序将根据视频程序语法调用视频程序(我不需要帮助的那个语法,我理解那部分)

前任。(一个“?”表示我不知道该放什么)

@echo 关闭

set /p howmany=你要添加多少个文件?

为了 /?%%variable(???) in (%howmany%???) do (set /p inputfilename=你要添加的第一个文件的名称是什么?inputfilename=filename set %howmany%-1???= %多少%????)

因此,如果用户对问题 1 的回答为 5,则 for 循环应询问问题 2 5 次,并在每次给出答案时创建 5 个唯一变量。输入文件名1 = 电影1.mov 输入文件名2 = 电影2.mov 等等。

几天来我一直试图弄清楚这一点..我无法绕过它。我之前已经为命令做了很多,但这让我很难过。我的浏览器历史记录充满了谷歌搜索,似乎人们会询问任何类型的文件。如果我确实找到了与这个问题很接近的任何东西,它总是被要求使用不同的编程语言。我的大脑被炸了。这甚至可能吗?请提前帮助和感谢。

4

3 回答 3

4

尽管马丁的回答描述了如何创建唯一变量,但他没有解释如何阅读它们。当您谈论“将每个答案保存为唯一变量”时,此处涉及的概念是ARRAY。您需要使用延迟扩展来获取唯一变量(“数组元素”)的值;有关更多详细信息,请键入set /?并查找“延迟扩展”。您可以在这篇文章中阅读有关批处理文件中数组管理的详细说明:cmd.exe (batch) 脚本中的数组、链表和其他数据结构

@echo off
setlocal EnableDelayedExpansion

set /p howmany=How many files do you want to add?
for /L %%i in (1,1,%howmany%) do (
   set /p inputfilename[%%i]=what is the name of the file you want to add?
)

rem Process array elements (just show them in this case)
for /L %%i in (1,1,%howmany%) do (
   echo %%i- !inputfilename[%%i]!
)

下面的示例可以帮助您以更简单的方式理解阵列管理:

@echo off
setlocal EnableDelayedExpansion

rem Create an array of ordinal terms
set i=0
for %%a in (first second third fourth fifth sixth) do (
   set /A i+=1
   set term[!i!]=%%a
)
rem Previous FOR is equivalent to: set term[1]=first, set term[2]=second, ...

set /p howmany=How many files do you want to add?
for /L %%i in (1,1,%howmany%) do (
   set /p inputfilename[%%i]=what is the name of the !term[%%i]! file you want to add?
)

rem Process array elements (just show them in this case)
for /L %%i in (1,1,%howmany%) do (
   echo The !term[%%i]! file is !inputfilename[%%i]!
)
于 2013-04-14T18:41:49.407 回答
2

无论如何回答你的实际问题:

@echo off

set /p howmany=How many files do you want to add? 

for /L %%i in (1, 1, %howmany%) do (
set /p inputfilename%%i=what is the name of the first file you want to add? 
)

rem Output the variables to check
set inputfilename

输出:

How many files do you want to add? 3
what is the name of the first file you want to add? first
what is the name of the first file you want to add? second
what is the name of the first file you want to add? third
inputfilename1=first
inputfilename2=second
inputfilename3=third
于 2013-04-14T11:31:41.100 回答
0

你需要那些 N 个变量来做什么?我猜您需要将文件名列表传递给某些脚本/命令行应用程序。

那么,用(空格?-)分隔的文件名列表来处理一个变量不是更好吗?

喜欢:

@echo off

set /p howmany=How many files do you want to add?

set list=

:NEXT

if %howmany% leq 0 goto END

set /p inputfilename=what is the name of the first file you want to add? 

set list=%list% "%inputfilename%"
set /a howmany=%howmany% - 1
goto NEXT

:END

echo %list%
于 2013-04-14T11:21:14.857 回答