Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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

windows programowanie

Komentarze

0 nowych
djfoxer   17 #1 07.04.2012 10:55

Świetne :) Pozdrawiam :)

gowain   18 #2 07.04.2012 12:59

I chyba najoptymalniejsze rozwiązanie w stosunku do potrzeb :)

deepone   9 #3 07.04.2012 13:11

@sgj sam bardzo często korzystam z zwykłych "batów", w 90% zastosowań nie potrzeba nic więcej.
Czasami jednak zdarza się, że trzeba obsłużyć coś więcej wtedy często nie obejdzie się od minimalnych zadań programistycznych ale to akurat mniejszość.

Druedain   13 #4 07.04.2012 15:48

Super! Miałem nadzieję, że ktoś podejdzie co sprawy w ten sposób.

:)

kuba144   5 #5 07.04.2012 16:15

To teraz proponuję wyścigi kto napisze krótszy kod ;p

Demagog   4 #6 07.04.2012 16:46

Hm. No to teraz czekamy na wersje w pythonie lub perlu.
Coś czuje, że taki edytorek (choć bez gui wygra)

yatq   6 #7 07.04.2012 17:10

no to czekamy teraz na win32asm :)

patryk9200   8 #8 07.04.2012 17:30

Nawet nie miałem pojęcia, że mój wpis zapoczątkuje "wojnę" na języki programowania :D.
Cel był zupełnie inny, jak w swoim wpisie podkreśliłem, program napisałem dla własnych potrzeb i dla innych go udostępniłem stwierdzając, że może się komuś przydać. Ja ze względu na charakter swej pracy baardzo dużo operuję na hostach i obecnie jedynie moja implementacja moje potrzeby spełnia. W szczególności chodzi o szybkie modyfikacje wielu hostów na raz bez dodatkowego klikania i potwierdzania. Szkoda, że zostało to odebrane w sposób zupełnie inny od zamierzonego.
Dla mnie liczy się wygoda i szybkość operowania na hostach.

patryk9200   8 #9 07.04.2012 17:33

@yatq kiedyś programowałem w assemblerze układy 8086. Pisanie w tym programu na win 32 mijało by się z celem, jest to bardzo trudny język.

Druedain   13 #10 07.04.2012 17:46

Trudny? Ilość komend naliczysz na palcach jednej ręki.

  #11 07.04.2012 17:51

@RaveStar przecież powershell trąci .netem. sądziłem że się tego nie tykasz? a może nie wiedziałeś

patryk9200   8 #12 07.04.2012 18:11

@Druedain trudny w sensie wymagający wieele pracy do osiągnięcia podobnego efektu w innych językach wyższego poziomu. To miałem na myśli. Nie zaś i liczbę jego komend która z resztą jest w dużym stopniu zależna od procesora.

  #13 07.04.2012 19:34

Naprawdę tak często edytujecie i nie możecie jakimś edytorem tekstowym (choćby notatnikiem) otworzyć i ręcznie to dopisać do tego pliku? A skrót do otwierania pliku w edytorze można do startu dodać ;].

soanvig   9 #14 08.04.2012 01:08

Najlepiej w BF. Nie można uważać się za dobrego programistę nie umiejąc napisać if-a w BF (oczywiście if-a własnego pomysłu, a nie zerżnietęgo z sieci) :D

Frankfurterium   9 #15 08.04.2012 01:24

Scala - prawie połowa tej objętości przy zachowaniu czytelności i jednego wyrażenia na linię, chociaż porządny programista funkcyjny pewnie zbiłby to jeszcze o 1/3 - połowę, a o Perlu szkoda nawet gadać.