すべての.doc
ファイルを;
でリストしたいディレクトリがあります。
次のバッチコマンドがすべてのファイルをエコーすることを知っています。
for /r %%i In (*.doc) DO echo %%i
しかし、今度はそれらをすべて変数に入れ、間に;
を追加して、一度にすべてをエコーします。
どうやってやるの?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
どうですか:
@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
ルーベンスのソリューションに基づいて、環境変数の遅延展開を有効にする必要があります(「help setlocal」または「help cmd」と入力)、varがループで正しく評価されるようにします。
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
また、次の制限も考慮してください( MSDN ):
個々の環境変数の最大サイズは8192バイトです。
変数@fname
または@ext
は単純に連結できることに注意してください。この:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
すべてのPDFファイルの名前を「filename_old.pdf」に変更します