Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Administrace OS Windows 1. Základní koncepce a pojmy systému Windows, historie a vývoj OS. 1Miroslav Prágl
(Pre)Historie 1981 – DOS 1985 – Windows 1.0 (a.k.a. Interface Manager) 1987 – Windows 2.0 Windows/286, Windows – Windows 3.0 OS/2 2Miroslav Prágl
Historie Windows 3.1, Windows – Windows NT – Windows 95 (5 editions) 1996 – Windows NT 4.0 (4 editions) 1998 – Windows 98 (2 editions) Miroslav Prágl
Nedávná minulost 4 Windows 2000 (5 editions) Windows ME Windows XP (15 editions) Windows Fundamentals for Legacy PCs WinPE 1.0 Miroslav Prágl
Přítomnost 5 Windows Server 2003 (5 editions) Windows Vista (8 editions) Windows 2008 WinPE 2.0, MS DART Miroslav Prágl
Summarum 6 Pro detailnější historii: Miroslav Prágl
Verze 7 Major a minor verze (1.0 -> 6.0) Windows 9x a NT jádro Marketing označení (XP != 2001, 1995 != Chicago) Přeskakování verzí (Windows NT 3.1) Rozdělení Home\Business edicí (až od Windows XP) Miroslav Prágl
Orientace 8 Centralizace managementu Objektově orientováno (.NET) Otevřeno pro 3 rd parties Virtualizace SoftGrid – virtualizace aplikací ( í Hypervisor - součást Windows 2008 ( Shims - řešení kompatibility existujících aplikací – Vista ( 47DB-AAEC-ED786109E030&displaylang=en) 47DB-AAEC-ED786109E030&displaylang=en Miroslav Prágl
Běžné nasazení Windows 9 Intranet server Directory services Workstations Terminal servers (Linux\WinCE client image) Messaging server Nedoporučuje se DMZ Proxy Miroslav Prágl
Diskuse 10 Miroslav Prágl
Windows scripting (cmd) 11 cmd.exe – command interpreter - MS Windows NT/2000/XP… dokumentace na cz/library/bb491071(en-us).aspxhttp://technet.microsoft.com/cs- cz/library/bb491071(en-us).aspx command extensions (default) /E:ON, file and directory name completion /F:ON delayed environment variable expansion /V:ON 11Miroslav Prágl
Poměnné 12 Proměnné výpis proměnných (set) systémové proměnné spec. proměnné (cd, date, time, random, errorlevel) parametry (%0, %1… %*), příkaz shift Manipulace s proměnnými set (/a) proměnná = výraz %var% náhrada hodnotou při vstupu na řádek nebo do víceřádkové struktury !var! náhrada hodnotou těsně před použitím (delayed variable expansion) 12Miroslav Prágl
Stdin, stderr, stdout, roury,filtry, spec. soubory 13 Přesměrování (> resp >>) Vstup: command < file Výstup: command > file Chybový výstup: command 2 > file Kombinace: command >file 2>&1 Roura (|) – filtrování Command1 | command2 |command3 Filtry sort find more 13Miroslav Prágl
Stdin, stderr, stdout, roury,filtry, spec. soubory 14 Spec. soubory nul (černá díra) con (konzole) prn (tiskárna) com1 (ser. port)… 14Miroslav Prágl
Nejdůležitější příkazy 15 rem (::) poznámka v kódu Rem toto je poznámka :label návěstí pro skoky v kódu :loop goto nepodmíněný skok goto loop ukončení scriptu: goto :eof resp. exit /b [errorlevel] pause vhodné pro debugging 15Miroslav Prágl
Nejdůležitější příkazy 16 Práce se soubory cd (change directory) cd /d d:\temp copy, xcopy copy file1+file2+file3 file del del *.* rmdir rmdir /s /q %temp% 16Miroslav Prágl
Nejdůležitější příkazy 17 Set manipulace s proměnnými podřetězce: set rok=%date:~-4% mat. operace: set /a rok=%rok% + 1 náhrada textu : set var=%var:old=new% ( echo %date:2008=2009%) interaktivně: SET /P var=vyzva ( set /p x=Zadej x: && echo !x!) 17Miroslav Prágl
Nejdůležitější příkazy 18 if Podmíněný příkaz IF condition commands IF condition (commands) ELSE (commands) Podmínky: [NOT] EXIST filename/dirname test (ne)existence souboru nebo adresáře [NOT] DEFINED var test existence proměnné [NOT] ERRORLEVEL number test návratové hodnoty (př. po EXIT /B errCode) [/I] [NOT] string1==string2 test shody řetězců (volitelně velká=malá) [/I] [NOT] string1 op string2 generický (numerický, jinak řetězcový) test shody op může být EQU, NEQ, LSS, LEQ, GTR, GEQ 18Miroslav Prágl
Nejdůležitější příkazy 19 for Cyklus zpracovávající řádky souboru, stdout spuštěného programu, adresářovou strukturu výčtový cyklus (default): FOR %v IN (set) DO commands aritmetický cyklus (/L): FOR /L %v IN (start step end) DO commands výčtový cyklus pro soubory (default) a adresáře (/D): FOR %f IN (file- set) DO commands resp. FOR /D %d IN (dir-set) DO commands cyklus pro analýzu souborů nebo výstupu příkazu (/F): FOR /F ["options"] %a IN (file-set nebo "string" nebo 'command') DO commands kde options jsou SKIP=n pro vynechání prvních n řádků EOL=c pro nastavení znaku konce řádku DELIMS=xxx pro nastavení oddělovačů (default mezera a tab) TOKENS=x,y,m–n[*] pro výběr položek na řádku, značených pak %a, %b atd. 19Miroslav Prágl
Příklady – set, if, goto 20 Pro zálohy chceme vytvářet adresář RRRR-MM-DD. Pokud adresář existujte přidáme k jeho názvu -1 pokud existuje i tento zvětšíme na -2 atd. set d=%date:~-4%-%date:~6,2%-%date:~3,2% set directory=%d% if exist %directory% goto ex goto end rem adresar existuje :ex set num=0 :loop set directory=%d%-%num% if not exist %directory% goto end set /a num=%num%+1 goto loop :end echo %directory% mkdir %directory% 20Miroslav Prágl
Příklady – přík. parametry, for 21 Jednoduchý head (výpis prvních n řádků souboru) – pozor, používá delayed variable expansion – nutno cmd off set filename=%1 set head=%2 set cnt=0 for /f "delims=" %i in (%filename%) do ( set /a cnt=!cnt!+1 if !cnt! LEQ %head% ( echo %i ) else ( goto end ) ) :end 21Miroslav Prágl
Příklady – find, errorlevel, přesměrování 22 Klasický skript pro testování dostupnosti serveru (ping). Do souboru log1.txt logujeme datum, čas, výsledek OK/ERROR a v případě nedostupnosti uložíme do souboru log2.txt i výsledek tracert. Pozor, ping nevrací korektně errorlevel 0 pokud je úspěšný– použit filtr off set host=cs.felk.cvut.cz ping %host% | find /i "TTL“ if errorlevel 1 goto err echo %date% ; %time% ; OK >>log.txt goto end :err echo %date% ; %time% ; ERROR >>log.txt echo %date% ; %time% >>log2.txt tracert %host% >>log2.txt echo >> log2.txt :end 22Miroslav Prágl
Příklady – for, if, set … 23 Skript pro vypsání obsahu souboru „pozpátku“ pro tazatele z přednášky. Pozor, for havaruje na “skip=0”, proto je první řádek původního souboru zpracován extra. Také neřeší prázdné off set lc=0 set fname=%1 FOR /F "tokens=*" %i in (%fname%) do set /a lc += 1 :loop set /a lc -= 1 rem skip (mensi nebo) rovno 0 if %lc% leq 0 goto endloop FOR /F "skip=%lc% tokens=*" %i in (%fname%) do ( echo %i goto loop ) :endloop FOR /F "tokens=*" %i in (%fname%) do ( echo %i goto :end ) :end 23Miroslav Prágl
Příklady – for, if, set … 24 To samé s prázdnými řádky – děkuji uživateli za fígl s off set lc=0 set fname=%1 rem finta s cislovanim radku - pak se z prazdnych stane [cislo] for /f %i in ('find /n /v ""^<%fname%') do set /a lc += 1 :loop set /a lc -= 1 rem skip (mensi nebo) rovno 0 if %lc% leq 0 goto endloop for /f "skip=%lc% tokens=1* delims=]" %i in ('find /n /v ""^<%fname%') do ( IF.%j.==.. ( echo. ) ELSE ( echo %j ) goto loop ) :endloop for /f "tokens=1* delims=]" %i in ('find /n /v ""^<%fname%') do ( IF.%j.==.. ( echo. ) ELSE ( echo %j ) goto end ) :end 24Miroslav Prágl
25 Zdroje: Tato přednáška vychází ze zdrojů programu “Windows ® Academic Program”: sing/windowsacademic.mspx sing/windowsacademic.mspx Doporučené odkazy: news://list.vyvojar.cz/cz.vyvojar.list.win news://list.vyvojar.cz/cz.vyvojar.list.win Miroslav Prágl
Diskuse 26 Miroslav Prágl