web-dev-qa-db-ja.com

バッチ-DIRの出力を変数に書き込む

DIRの出力を変数に格納する必要があります。

これは、前に尋ねられました。 ここ または ここ または ここ

それらはすべて、私が現在使用しているものとほぼ同様の答えを提供します。

%= Find the *.sln file and write its path to the file temp.temp =%
DIR /s/b *.sln > temp.temp

%= Read out the content of temp.temp again to a variable =%
SET /p texte=< temp.temp

%= Remove the temp.temp file =%
DEL temp.temp

%= Get only the filename without path =%
FOR %%A IN ("%texte%") DO (
    SET Name=%%~nxA
)

しかし、私の場合、DIR /s/b *.slnの出力は常にone-linerになると確信しています。私にとっては、それは少し醜く見えます
a)出力を外部ファイルに保存し、
b)FORループを実行しますが、1行しかないことがわかっています。

これを行う直接/簡単な方法はありますか?

7
derHugo
for /f "delims=" %%a in ('dir /s /b *.sln') do set "name=%%a"

実際、最も効率的な方法です(一時ファイルを必要とせずに、コマンドの出力を直接処理できます)。
%name%には、ファイルの完全修飾ファイル名(または、ファイルが複数ある場合は最後のファイル)が含まれます

7
Stephan