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><>
|
||
##}
|