Hosty w Win7, podejście proste
Na początek pozdrowienia dla komentujących 3...2...1... Go! oraz Tworzenie własnych hostów próbujących w komentarzach udowodnić wyższość "Świąt Wielkanocy nad Świętami Bożego Narodzenia".
Wracając do tematu. Można się zastanowić jaki cel ma pisanie programu do wykonywania prostej czynności. W niemal każdym systemie istnieje jakiś język skryptowy pozwalający na zautomatyzowanie niektórych czynności. W Windows jest kilka. Do bardzo skomplikowanych czynności można by chociażby użyć PowerShell. Osoby znające jscript lub vbscript mogą użyć WSH lub HTA. Jednak do prostych czynności wystarczą najprostsze narzędzia. Możemy zatem skorzystać nawet z technologii wywodzącej się z ... DOS.
Czego więc potrzeba do stworzenia prostego edytora pliku hosts? Dowolnego edytora tekstu. Tworzymy więc plik hosts.cmd, wklejamy podany niżej kod i mamy gotowy prosty edytor hostów z możliwością dalszej rozbudowy.
Wymagania:
- Win7(testowane), na starszych może nie działać bez zmiany kodu.
- Uprawnienia administratora
@ECHO OFF :menu cls Echo S - Show hosts Echo A - Add host Echo D - Delete Host Echo Q - Exit CHOICE /C:SADQ /m "Select option:" IF errorlevel 4 goto exit IF errorlevel 3 goto delete IF errorlevel 2 goto add IF errorlevel 1 goto showhost goto exit :delete setlocal ENABLEDELAYEDEXPANSION find /v "#" /n %systemroot%\system32\drivers\etc\hosts set /p line="Wprowadz numer linii do usuniecia[0 jeśli rezygnacja] >> " rem domyslny plik hosts, puste linie, zmienic po pierwszym użyciu SET lineNum=2 rem SET lineNum= FOR /F " tokens=1 delims=" %%i in (%systemroot%\system32\drivers\etc\hosts) do ( SET /a lineNum += 1 if NOT !lineNum! == !line! ECHO. %%i >> %systemroot%\system32\drivers\etc\hosts2 ) del %systemroot%\system32\drivers\etc\hosts ren %systemroot%\system32\drivers\etc\hosts2 hosts endlocal goto menu :add set /p newhost="Wprowadz hosta w formacie: Adres_IP Nazwa >> " @echo: echo %newhost% >> %systemroot%\system32\drivers\etc\hosts goto menu :showhost cls find /v "#" /n %systemroot%\system32\drivers\etc\hosts pause goto menu :exit exit
Kod jest jaki jest jednak swoje zadanie spełnia. Można go jeszcze trochę poprawić i zoptymalizować.