2014-01-08 4 views
1

Я пытаюсь найти список машин в файлах в папках и распечатать только последнюю строку вывода.Пакетный файл для вывода последней строки findstr

@echo off 
for /f %%a in (computers.txt) do findstr /xs "%%a" unhealthy.txt 
pause 

Файл computers.txt имеет список из 300 машин.

Я хочу, чтобы вывести только последнюю строку каждого найденного экземпляра.

В настоящий момент команда отображает и выводит все экземпляры имени компьютера, а не только конец. Я пытался использовать «хвост для Windows», но также получаю ошибки.

Токовый выход:

2013\10-Oct\28\unhealthy.txt:WIN57505 
2013\10-Oct\29\unhealthy.txt:WIN57505 
2013\10-Oct\30\unhealthy.txt:WIN57505 
2013\10-Oct\31\unhealthy.txt:WIN57505 
2013\11-Nov\1\unhealthy.txt:WIN57505 
2013\11-Nov\4\unhealthy.txt:WIN57505 
2013\11-Nov\5\unhealthy.txt:WIN57505 
2013\11-Nov\6\unhealthy.txt:WIN57505 

Я только хочу:

2013\11-Nov\6\unhealthy.txt:WIN57505

ответ

0
@echo off 
setlocal enableextensions disabledelayedexpansion 
for /f %%a in (computers.txt) do (
    set "line=" 
    for /f "tokens=*" %%b in ('findstr /xs "%%a" *') do set "line=%%b" 
    setlocal enabledelayedexpansion 
    echo(!line! 
    endlocal 
) 
pause 
endlocal 
+0

Спасибо - это работает как шарм. Изменен вход findstr в файл txt. – OnlyHumain

0
setLocal enableDelayedExpansion 
for /f %%a in (computers.txt) do for /f "tokens=*" %%A in ('findstr /xs "%%a"') do set lastFound=%%A 
echo !lastFound! 
Смежные вопросы