1

簡単なスクリプトのように見えるものを書こうとしていますが、わかりません。

基本的に、ユーザーは質問 1 を尋ねられます。「1 つの大きなビデオ ファイルを作成するために、何個の (この場合) ビデオ ファイルを追加しますか?」

次に、ユーザーは質問 2 を尋ねられます。「一緒に追加するファイルの名前は何ですか?」今ここに私が抱えている問題があります...

質問2に最初の質問で指定された回数を尋ね、各回答を一意の変数として保存するforループを作成するにはどうすればよいですか(変数のデクリメントを推測しています)

ユーザーからすべての正しいファイル名を受け取った後、プログラムはビデオプログラムの構文に従ってビデオプログラムを呼び出します(その構文は私が助けを必要としない、私はその部分を理解しています)

元。(「?」は、そこに何を入れればよいかわからないことを意味します)

@エコーオフ

set /p howmany=いくつのファイルを追加しますか?

為に /?%%variable(???) in (%howmany%???) do (set /p inputfilename=追加する最初のファイルの名前は? inputfilename=filename set %howmany%-1???= %幾つか%????)

したがって、ユーザーが質問 1 に 5 と答えた場合、for ループは質問 2 を 5 回質問し、回答が与えられるたびに 5 つの一意の変数を作成する必要があります。inputfilename1 = movie1.mov inputfilename2 = movie2.mov など。

私はこれを数日間理解しようとしてきました.. 私はそれについて頭を悩ませることはできません. 私は以前に多くの for コマンドを実行しましたが、これは私を困惑させました。私のブラウザの履歴は、あらゆる種類のファイルについて人々が尋ねるような Google 検索でいっぱいです。この質問に少しでも近いものを見つけた場合、常に別のプログラミング言語を求められました。私の脳は揚げられています。これは何か可能ですか?助けてください、事前に感謝します。

4

3 に答える 3

4

Martin の回答では、一意の変数の作成方法について説明していますが、それらの読み取り方法については説明していません。「各回答を一意の変数として保存する」ことについて話している場合、ここで関係する概念はARRAYです。一意の変数 (「配列要素」) の値を取得するには、遅延展開を使用する必要があります。詳細については、set /?「遅延拡張」と入力して検索してください。この投稿で、バッチ ファイルでの配列管理に関する詳細な説明を読むことができます: cmd.exe (バッチ) スクリプトの配列、リンクされたリスト、およびその他のデータ構造

@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 に答える