File batch in uscita Ultima riga di Findstr
-
21-12-2019 - |
Domanda
Sto cercando di trovare un elenco di macchine in file in cartelle e stampare solo l'ultima riga dell'uscita.
@echo off
for /f %%a in (computers.txt) do findstr /xs "%%a" unhealthy.txt
pause
.
Il file Computers.txt ha un elenco di 300 macchine.
Voglio che tu possa emettere solo l'ultima riga di ogni istanza che trova.
In questo momento il comando visualizza e emette tutte le istanze del nome del computer, non solo la coda.Ho provato ad usare "coda per windows" ma sto ricevendo errori.
Uscita corrente:
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
.
Voglio solo:
2013\11-Nov\6\unhealthy.txt:WIN57505
Soluzione
@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
. Altri suggerimenti
setLocal enableDelayedExpansion
for /f %%a in (computers.txt) do for /f "tokens=*" %%A in ('findstr /xs "%%a"') do set lastFound=%%A
echo !lastFound!
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow