File batch per creare ed eliminare il testo su Windows Host file con Task Scheduler
-
21-12-2019 - |
Domanda
L'obiettivo è utilizzare l'Utilizzo dello scheduler di attività per bloccare Facebook da un tempo designato per aumentare la produttività e ridurre le distrazioni.Ho cancellato Facebook per sette mesi.Non voglio usare il software di terze parti.Mi aiuti per favore.Inoltre, se hai un metodo più semplice o un codice migliore per favore mostra.
Ecco cosa ho.
Ho questo file batch= blockfacebook.bat eseguito un determinato tempo che funziona:
echo 0.0.0.0 www.facebook.com >> C: \ Windows \ System32 \ Driver \ etc \ host
Sebbene il prossimo file batch= UNBLOCKFaceBook.bat ha il risultato di svuotare completamente il file host:
Tipo C: \ Windows \ System32 \ Driver \ etc \ host |Findstr / V Facebook> c: \ windows \ system32 \ Driver \ etc \ host
Qualcuno potrebbe dirmi cosa sto sbagliando con l'Unblockfacebook.bat
Grazie,
Aegis
Soluzione
@echo off
setlocal enableextensions disabledelayedexpansion
set "file=c:\windows\system32\drivers\etc\hosts"
for /f "tokens=* delims=0123456789" %%a in (
'findstr /n /i /v /c:"facebook" "%file%" ^& type nul ^> "%file%"'
) do (
set "line=%%a"
setlocal enabledelayedexpansion
>>"%file%" echo(!line:~1!
endlocal
)
endlocal
.
Questo codice utilizza findstr
per filtrare le linee di input e il numero dell'uscita (numerazione Le linee assicura che le linee vuote nel file di input vengano lette, elaborate e scritte in output) e rimuove il contenuto del file di input. Poiché for /f
ha memorizzato nella cache dell'output di findstr
in memoria e findstr
ha terminato l'elaborazione dei dati, non ci sono problemi per farlo.
Allora for
inizia a elaborare l'ingresso (l'uscita di findstr
). È un elenco di linee numerate. Per rimuovere i numeri, vengono utilizzati come delimitatori nel comando for
. Poiché le linee iniziano con delimitatori, vengono rimossi fino a quando non viene trovato un carattere non delimitatore, il colon che separa i numeri dal contenuto della linea (il colon non è stato utilizzato come delimitatore per evitare problemi con le linee che iniziano con un colon per esempio un indirizzo IPv6 )
Ora, con i numeri rimossi dall'inizio tutto ciò che deve essere fatto è rimuovere il primo carattere e aggiungere le linee al file di input / output (che è stato svuotato).
Altri suggerimenti
type c:\windows\system32\drivers\etc\hosts | findstr /v facebook > c:\users\aegis\desktop\grr.txt
type c:\users\aegis\desktop\grr.txt > c:\windows\system32\drivers\etc\hosts
.
Questa è la soluzione che ho capito quando leggo questo.Sebbene siano sempre apprezzati metodi più efficaci o alternativi.