vendredi 4 mars 2011

Call+chemin avec le caractère %

appeler un bat se trouvant dans un dossier %dossier% est embêtant, et peux facilement être tragique si notre %dossier% était une variable valuée...pour contournée ce problème on peux faire ceci:

echo=|call %%dossier%%\srep\fichier.bat
:: ou bien
Cmd /c %%dossier%%\srep\fichier.bat
:: ou bien
cd /d "%%dossier%%\srep"
fichier.bat

Fibonacci en batch

ce beau vieux Fibonacci est desormais devenu une star...


@Echo oFF
Setlocal EnableDelayedExpansion

Set cnt=20
Set /A a=1,b=a
Echo !a!&for /l %%# in (1=1=!cnt!) do (
  set /A c=a+b,a=b,b=c
  Echo=!c!
)
Pause




émulation de la commande externe attrib.exe

Set-Attrib est une fonction qui associe à la fois la simplicité du codage en PS et la puissance de celui-ci:


Function Set-Attrib
{
  param(
   [string]$Path=".",
   [string]$Filter="*",
   [switch]$ReadOnly,
   [switch]$System,
   [switch]$Normal,
   [switch]$Hidden,
   [switch]$Archive,
   [switch]$Recurse
  )
  $attr=@()
  Switch($true)
   {
     $ReadOnly { $attr+='ReadOnly'}
     $Archive  { $attr+='Archive' }
     $Hidden   { $attr+='Hidden'  }
     $System   { $attr+='System'  }
     $Normal   { $attr+='Normal'  }
   }      
 gci -Path $Path -Fi $Filter -Recurse:$Recurse -Fo | `
   Where { -not $_.PSIsContainer } | `
     ForEach {
       $_.PsBase.Attributes=[System.IO.FileAttributes]$attr
     }
 <#
   .SYNOPSIS
       Modifie les attributs des fichiers
   .DESCRIPTION
     Modifie les attributs des fichiers, les attributs supportés sont:
       -ReadOnly: fichier en Lecture seul
       -System  : fichier système
       -Hidden  : fichier caché
       -Archive : fichier archivé
   .PARAMETER Path
     Chemin du répertoire source
   .PARAMETER Filter
     Filtre sur les fichiers à traiter ou bien un nom d'un fichier  
   .PARAMETER Recurse
     recherche recursive  
   .EXAMPLE 
     PS C:\> Set-Attrib -Path c: -Filter boot.ini -Normal
     hôtter du fichier c:\boot.ini les attributs "Sytème" et "Caché"
   .EXAMPLE
     PS C:\> Set-Attrib -Filter *.inf -Recurse -ReadOnly -System
     Modifie tous les attributs des fichiers *.iNF du répértoire courant et tous ses sous répértoie en fichiers "En lecture seul" et "Système"
   .EXAMPLE
     PS C:\> Set-Attrib -Hidden
     Caché tous les fichiers du répertoire en cours    
 #>    
}