75

.docすべてのファイルを。でリストしたいディレクトリがあります;

次のバッチコマンドがすべてのファイルをエコーすることを知っています。

for /r %%i In (*.doc) DO echo %%i

しかし今、私はそれらすべてを変数に入れ;、間にそれらを追加し、それらすべてを一度にエコーしたいと思います。
どうやってやるの?

set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
4

3 に答える 3

65

どうですか:

@echo off
set myvar="the list: "
for /r %%i in (*.doc) DO call :concat %%i
echo %myvar%
goto :eof

:concat
set myvar=%myvar% %1;
goto :eof
于 2010-01-08T11:06:22.460 に答える
45

ルーベンスのソリューションに基づいて、変数がループで正しく評価されるように、env 変数の遅延展開を有効にする必要があります (「help setlocal」または「help cmd」と入力)。

@echo off
setlocal enabledelayedexpansion
set myvar=the list: 
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%

次の制限も考慮してください ( MSDN )。

個々の環境変数の最大サイズは 8192 バイトです。

于 2010-01-08T11:25:44.617 に答える
0

変数@fnameor@extは単純に連結できることに注意してください。これ:

forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"

すべての PDF ファイルの名前を「filename_old.pdf」に変更します

于 2015-11-12T16:08:13.037 に答える