web-dev-qa-db-ja.com

フォルダを反復処理し、ファイルの名前を単一の文字列変数に追加する方法

私は、他のファイルや画像の束と一緒にドワーフ要塞と呼ばれるゲームのダウンロードを自動化するバッチファイルを書いています。すべてが機能していますが、ダウンロードした.txtファイルのフォルダーからカラーセットを選択できるようにユーザーに提供したいと思います。問題は、ファイル名に基づいて使用可能なカラーセット名を提供したいので、フォルダーを繰り返し処理してファイルの名前(.txt拡張子なし)を取得し、それらを1つの文字列に追加する必要があることです。フォーマットfilename, filename, ... etc。ファイルを反復処理することはできますが、その単一の文字列を作成する方法がわかりません。これが私がこれまでに持っているものです(私はそれが機能しないことを知っています):


set /a colorFileNames=""
for %%f in (%CD%\colors\colors\*) do (
    set %temp%=%%f
    set colorFileNames="%%colorFileNames%%, %temp%:~0,-3"
)

次に、ユーザーへの質問でcolorFileNamesを使用します。

1
flüber _

ファイル名に基づいて利用可能なカラーセット名を提供したい

フォルダを繰り返し処理してファイルの名前(.txt拡張子なし)を取得し、ファイル名、ファイル名などの形式で単一の文字列に追加する必要があります。

次のバッチファイル(test.cmd)を使用します。

@echo off
setlocal enabledelayedexpansion
set colorFileNames=
for %%f in (%CD%\colors\colors\*) do (
  set _file=%%~nf
  if [!colorFileNames!]==[] (
    set colorFileNames=!_file!
    ) else (
    set colorFileNames=!colorFileNames!, !_file!
    )
)
echo !colorFileNames!
endlocal

例:

F:\test>dir /b colors\colors
red.txt
green.txt
blue.txt
sky blue pink.txt

F:\test>test
red, green, blue, sky blue pink
F:\test>

参考文献

0
DavidPostill