User:Ulaaneot: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
Line 95: Line 95:


== Powershelli Lahendus ==
== Powershelli Lahendus ==
<source>
<source lang=powershell>
#Koostaja: Urmo Laaneots, A21, ulaaneot@itcollege.ee
#Koostaja: Urmo Laaneots, A21, ulaaneot@itcollege.ee
#Versioon: 2
#Versioon: 2

Revision as of 17:47, 9 June 2011

Quest 26

Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.


Lahendus 1 (arvestamiseks)

Versioon 1.0

Bash Quest oli koostatud vigaselt, sest .html faili esimesel real on tavaliselt <html> blokk.

Siiski on Questi esialgne lahendus kontrollitud ja töötab:

#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 1.0
# Skript otsib üles kõik .html failid ja kirjutab faili esimese rea ja aadressi faili failid.html.
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide esimese rea ja paneme selle muutujasse
	FIRSTLINE=`head -n 1 ${files[$c]}`
	# Kirjutame faili esimese rea .html faili
	echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "Faili asukoht: <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"


Bash Questi õige lahendus

Questi lahendus, mis vastab Margus Ernitsa poolt parandatud questile.

Script kirjutab <title></title> blokkide vahele jääva info .html faili.


#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 2.0
# Quest 26
# Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html.
echo "Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html"
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide <title> bloki ja valime seal ainult pealkirja ning paneme selle muutujasse
	TITLE=`grep -i "<title>" ${files[$c]} | cut -f 2 -d ">" | cut -f 1 -d "<"`
	# Kirjutame faili pealkirja .html faili
	echo "<i>Faili pealkiri:</i> <b>$TITLE</b><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "<i>Faili asukoht:</i> <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"

Powershelli script

See script..

Powershelli Lahendus

#Koostaja: Urmo Laaneots, A21, ulaaneot@itcollege.ee
#Versioon: 2
#Ajalugu: Versioon 1 on tehtud Meelis Tamme poolt!
#Skript loob taustapildi, millele on kirjutatud arvuti nimi, kasutaja, kes on sisse logitud ja aruvti IP aadress
 
#faili asukoht, kuhu loodav pilt salvestatakse
$filename =  $ENV:USERPROFILE + "\taust.png" 

#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper1
{
#requires -version 2.0
## Set-Wallpaper - set your windows desktop wallpaper
###################################################################################################
## Usage:
##    Set-Wallpaper "C:\Users\Joel\Pictures\Wallpaper\Dual Monitor\mandolux-tiger.jpg" "Tile"
##    ls *.jpg | get-random | Set-Wallpaper
##    ls *.jpg | get-random | Set-Wallpaper -Style "Stretch"
###################################################################################################
## History:
##    v0.5  First release (on #PowerShell@irc.freenode.net)
##    v1.0  Public release (http://www.poshcode.org/488)
##          - Added Style: Tile|Center|Stretch
##    v1.1  (http://poshcode.org/491)
##          - Added "NoChange" style to just use the style setting already set
##          - Made the Style parameter to the cmdlet optional
##    v2.0  This Release
##          - Updated for CTP3, and made it run as a script instead of a function.
###################################################################################################
[CmdletBinding()]
Param(
   [Parameter(Position=0, Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
   [Alias("FullName")]
   [string]
   $Path
,
   [Parameter(Position=1, Mandatory=$false)]
   $Style = "NoChange"
)

BEGIN {
try {
   $WP = [Wallpaper.Setter]
} catch {
   $WP = add-type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
   public enum Style : int
   {
       Tile, Center, Stretch, NoChange
   }

   public class Setter {
      public const int SetDesktopWallpaper = 20;
      public const int UpdateIniFile = 0x01;
      public const int SendWinIniChange = 0x02;

      [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
      
      public static void SetWallpaper ( string path, Wallpaper.Style style ) {
         SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
         
         RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
         switch( style )
         {
            case Style.Stretch :
               key.SetValue(@"WallpaperStyle", "2") ; 
               key.SetValue(@"TileWallpaper", "0") ;
               break;
            case Style.Center :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "0") ; 
               break;
            case Style.Tile :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "1") ;
               break;
            case Style.NoChange :
               break;
         }
         key.Close();
      }
   }
}
"@ -Passthru
}
}
PROCESS {
   Write-Verbose "Setting Wallpaper ($Style) to $(Convert-Path $Path)"
   $WP::SetWallpaper( (Convert-Path $Path), $Style )
}

}

#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper-older($Value)
{
 Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value "$value"
 rundll32.exe user32.dll, UpdatePerUserSystemParameters
}

#Funktsioon, mis väljastab kõik arvuti ip aadressid
Function Get-IPAddresses
{ 
$Computer = "." 
$IPconfigset = Get-WmiObject Win32_NetworkAdapterConfiguration 

$count = 0
foreach ($IPConfig in $IPConfigSet) { 
   if ($Ipconfig.IPaddress) { 
      foreach ($addr in $Ipconfig.Ipaddress) { 
      "IP Address: {0}" -f  $addr; 
      $count++  
      } 
   } 
} 
if ($count -eq 0) {"No IP addresses found"} 
}

# Arvuti nimi
$PC=Get-Content Env:\COMPUTERNAME
 
# Kasutajanimi
$USER=Get-Content Env:\USERNAME
 
# IP Aadress
$IP=@(Get-IPAddresses)

# Tekst, mida kirjutatakse pildile (mitu rida)
$PC_text ="Masin: $PC"
$USER_text = "Kasutaja: $USER"

# Väärtustame text array
$text = ($PC_text,$USER_text) + $IP

Add-Type -AssemblyName System.Drawing
  
# Loome uue bitmapi, viimased kaks nr määravad reso
$bmp = new-object System.Drawing.Bitmap 1024,780
 
# Valime kirjastiili, millega teks kirjutatakse
$font = new-object System.Drawing.Font Consolas,18
 
# Määrame taustapintsli värvi
$brushBg = [System.Drawing.Brushes]::Black
 
# Määrame kirjutamis pintsli värvi
$brushFg = [System.Drawing.Brushes]::White
 
$graphics = [System.Drawing.Graphics]::FromImage($bmp)
$graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height)

$korgus=30

# Kirjutame teksti pildile
foreach ($number in $text) { 
	$korgus = $korgus + 20
	$graphics.DrawString($number,$font,$brushFg,50,$korgus)
  	$count++  
}
 
$graphics.Dispose()
 
# Salvestame pildi
$bmp.Save($filename)
 
# Funktsioon, mis küsib op süsteemi
$OPSYS=((get-wmiobject Win32_OperatingSystem | select Version | findstr [0-9].))

If ($OPSYS -gt 6) {
Set-WallPaper1 -Path $filename
}
Else {
Set-WallPaper-older -value $filename
}