FOR 出力以外のすべてを 1 行に入れるのは簡単です。TIME および DATE コマンドの代わりに、動的な %TIME% および %DATE% 変数を使用する必要があります。
@echo off
echo %time% "--" %date% -I- Purging
FORFILES /P "D:\Logs" /M *.log /D -90 /C "cmd /c echo @file @fdate"
rem FORFILES that will purge the files
ファイル名も同じ行に表示する場合は、EitanT が提案したように一時変数を使用できます。ただし、これにより、最大 8191 変数サイズに収まるファイル数に制限されます。無制限の数のファイルを処理するには、代わりに SET /P を使用できます。FOR /F ステートメントが必要なようには見えませんが、それなしでは解決できない引用の問題があります。
@echo off
<nul (
set/p="%time% -- %date% -I- Purging "
for /f "delims=" %%A in (
'FORFILES /P "D:\Logs" /M *.log /D -90 /C "cmd /c echo @file @fdate"'
) do set/p="%%A "
)
rem FORFILES that will purge the files
ファイルを一覧表示すると同時にファイルをパージしない理由はありません。FORFILES は非常に遅いため、同じコマンドで削除と一覧表示を行う方がはるかに効率的です。
@echo off
<nul (
set/p="%time% -- %date% -I- Purging "
for /f "delims=" %%A in (
'FORFILES /P "D:\Logs" /M *.log /D -90 /C "cmd /c del @path&echo @file @fdate"'
) do set/p="%%A "
)
2015-01-06 更新
FOR /Fを使用せずに解決策を見つけました。0x22 を使用して SET /P プロンプトを引用符で囲み、FINDSTR を使用して、要求された出力の前に FORFILES が書き込む空の行を削除します。
@echo off
<nul (
set/p="%time% -- %date% -I- Purging "
forfiles /p "d:\logs" /m *.log /d -90 /c "cmd /c del @path&set/p=0x5e0x22@file @fdate 0x5e0x22"'|findstr .
)