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

È stato utile?

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.Inserire l'immagine Descrizione qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top