2012-11-20 15 views
10

Ho un file di testo nella stessa cartella in cui si trova il mio file batch.
Come verificare se il file di testo contiene un determinato testo in batch?

quindi voglio che il mio file batch legga il contenuto del file di testo e, a seconda del contenuto di quel file di testo, voglio che esegua un'azione.

esempio se il file di testo contiene "Hello World", quindi fare come Avvio VLC se non contiene Hello World quindi fare qualcos'altro.

Il testo verrà aggiornato autonomamente.

questo è il mio codice batch finora, può emettere il testo dal file di testo sullo schermo.

@echo off 
for /f "tokens=*" %%a in (log.txt) do call :processline %%a 

pause 
goto :eof 

:processline 
echo line=%* 

goto :eof 

:eof 
+0

Penso [questa domanda] (http://stackoverflow.com/questions/106053/how-can-i-make-a-batch-file-to-act-like-a-simple-grep-using- perl) ha quello che stai cercando per – zbrunson

risposta

24

Si dovrebbe utilizzare Trova o FINDSTR. Digitare HELP FIND e HELP FINDSTR da un prompt dei comandi per ottenere la documentazione. TROVARE è molto semplice e affidabile. FINDSTR è molto più potente, ma anche temperamentale. Vedi What are the undocumented features and limitations of the Windows FINDSTR command? per maggiori informazioni.

Non ti interessa l'output di entrambi i comandi, quindi puoi reindirizzare l'output su null.

Entrambi i comandi impostano ERRORLEVEL su 0 se la stringa viene trovata e 1 se la stringa non viene trovata. È possibile utilizzare gli operatori && e || per eseguire in modo condizionale il codice a seconda che la stringa sia stata trovata.

>nul find "Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

>nul findstr /c:"Hello World" log.txt && (
    echo "Hello World" was found. 
) || (
    echo "Hello World" was NOT found. 
) 

Si potrebbe anche provare ERRORLEVEL in un'istruzione IF, ma io preferisco la sintassi di cui sopra.

+0

non ho capito @echo off :) Grazie mille. – Mowgli

+0

Ciao, ho una domanda mi spero che tu possa aiutarmi, invece di log.txt, c'è un modo in cui posso inserire URL che avrà solo un link di dati. Grazie – Mowgli

+0

Non sembra funzionare per me. (Hello World non viene mai trovato) – Cestarian

Problemi correlati