Вы должны разделить вывод вашей команды. В лучшем случае используйте для этого еще один цикл for /f
:
For /r C: %%a in ("*.exe" "*.msi") do (
@echo %%a
for /f "tokens=1* delims=]" %%b in (' Dir /ta "%%a" ^| find /n " " ^| find "[6]"') do echo %%c
)
Разбивает вывод dir
на %%b
= [6
и %%c
= 10/09/2018 02:22 PM xxxxxxx.exe
РЕДАКТИРОВАТЬ на основе новой информации в вопросе:
сначала получите все желаемые данные, затем отобразите всю строку.
@echo off
setlocal enabledelayedexpansion
(
Echo Directory,Filename,Date Created,Date Modified,Date Accessed,Size
For /r C: %%a in ("*.exe" "*.msi") Do (
For /f "tokens=1,2" %%b in ('dir /tc "%%a" ^| findstr /b "[0-9]"') Do set "tc=%%b %%c"
For /f "tokens=1,2" %%b in ('dir /tw "%%a" ^| findstr /b "[0-9]"') Do set "tw=%%b %%c"
For /f "tokens=1,2" %%b in ('dir /ta "%%a" ^| findstr /b "[0-9]"') Do set "ta=%%b %%c"
echo %%~dpa,%%~nxa,!tc!,!tw!,!ta!,%%~za
)
)>C:\MyText.csv
Перенаправление выполняется только один раз, чтобы избежать открытия / записи / закрытия файла для каждой строки.