Blog (24)
Komentarze (1.6k)
Recenzje (0)
@sgjHosty w Win7, podejście proste

Hosty w Win7, podejście proste

07.04.2012 04:03, aktualizacja: 07.04.2012 07:47

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ć.

Wybrane dla Ciebie
Komentarze (15)