126 lines
4.9 KiB
Plaintext
126 lines
4.9 KiB
Plaintext
|
## --------------------------------------------------------------------------
|
|||
|
function Write-cHost($message = "") #Write to host with #colors#
|
|||
|
## --------------------------------------------------------------------------
|
|||
|
{
|
|||
|
# Any text preceeded by '#color#' will be output with that color
|
|||
|
# until the occurence of the next '#' or '#color#'
|
|||
|
|
|||
|
[string]$pipedMessage = @($Input)
|
|||
|
if (!$message)
|
|||
|
{
|
|||
|
if ( $pipedMessage ) {
|
|||
|
$message = $pipedMessage
|
|||
|
}
|
|||
|
}
|
|||
|
if ( $message ){
|
|||
|
# predefined Color Array
|
|||
|
$colors = @("black","blue","cyan","darkblue","darkcyan","darkgray","darkgreen","darkmagenta","darkred","darkyellow","gray","green","magenta","red","white","yellow");
|
|||
|
|
|||
|
# Get the default Foreground Color
|
|||
|
$defaultFGColor = $host.UI.RawUI.ForegroundColor
|
|||
|
|
|||
|
# Set CurrentColor to default Foreground Color
|
|||
|
$CurrentColor = $defaultFGColor
|
|||
|
|
|||
|
# Split Messages
|
|||
|
$message = $message.split("#")
|
|||
|
|
|||
|
# Iterate through splitted array
|
|||
|
foreach( $string in $message ){
|
|||
|
# If a string between #-Tags is equal to any predefined color, and is equal to the defaultcolor: set current color
|
|||
|
if ( $colors -contains $string.tolower() -and $CurrentColor -eq $defaultFGColor )
|
|||
|
{ $CurrentColor = $string }
|
|||
|
else
|
|||
|
{
|
|||
|
# If string is a output message, than write string with current color (with no line break)
|
|||
|
write-host -nonewline -foreground $CurrentColor $string
|
|||
|
# Reset current color
|
|||
|
$CurrentColor = $defaultFGColor
|
|||
|
}
|
|||
|
# Write Empty String at the End
|
|||
|
}
|
|||
|
# Single write-host for the final line break
|
|||
|
write-host
|
|||
|
}
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function GetFilePath($fullPath)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
return [IO.Path]::GetDirectoryName($fullPath);
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function GetFileNamePath($fullPath)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
# same as GetFilePath()
|
|||
|
return [IO.Path]::GetDirectoryName($fullPath);
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function GetFileName($fullPath)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
return [IO.Path]::GetFileName($fullPath);
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function GetFileNameBase($fullPath)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
return [IO.Path]::GetFileNameWithoutExtension($fullPath);
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function GetFileNameExtension($fullPath)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
$extension = [IO.Path]::GetExtension($fullPath);
|
|||
|
write-host $extension
|
|||
|
if ($extension.startsWith("."))
|
|||
|
{ return $extension.substring(1); }
|
|||
|
return $extension
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function Normalize($fileName, $path)
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
return [System.IO.Path]::GetFullPath((Join-Path ($path) $fileName));
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function Get-Tree($Path,$Include='*')
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
@(Get-Item $Path -Include $Include) +
|
|||
|
(Get-ChildItem $Path -Recurse -Include $Include) |
|
|||
|
sort pspath -Descending -unique
|
|||
|
}
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
function Remove-Tree($Path,$Include='*')
|
|||
|
## ----------------------------------------------------------------------------
|
|||
|
{
|
|||
|
Get-Tree $Path $Include | Remove-Item -force -recurse
|
|||
|
}
|
|||
|
<######################## TESTING ####################################
|
|||
|
|
|||
|
# A -recure bug in Remove-Item <directory> causes files to be skipped
|
|||
|
# or deadlocks when files being remove at same time as parent directory.
|
|||
|
# Remove-Tree (above) removes the decendent files before the parent directory by
|
|||
|
# sorting the dir|files in decendent order to be removed
|
|||
|
|
|||
|
Write-Host ("Get-Tree `"c:\temp\test`" `"*.o`"") -foreground yellow;
|
|||
|
Get-Tree "c:\temp\test" "*.o"
|
|||
|
|
|||
|
Write-Host ("Remove-Tree `"c:\temp\test`" `"*.o`"") -foreground yellow
|
|||
|
Remove-Tree "c:\temp\test" "*.o"
|
|||
|
|
|||
|
Write-Host ("Remove-Tree `"c:\temp\test`"") -foreground yellow
|
|||
|
Remove-Tree "c:\temp\test"
|
|||
|
########################### TESTING ####################################>
|
|||
|
## --------------------------------------------------------------------------
|
|||
|
##function Pause ($Message=<3D>Press any key to continue<75><65>)
|
|||
|
## --------------------------------------------------------------------------
|
|||
|
##{
|
|||
|
## # The PowerShell version 3+ Pause is ok, but not included on Win7
|
|||
|
## Write-Host -NoNewLine $Message
|
|||
|
## $null = $Host.UI.RawUI.ReadKey(<28>NoEcho,IncludeKeyDown<77>)
|
|||
|
## Write-Host <20><>
|
|||
|
##}
|