9.28.2012

...goes a long way

...a little bit of script.

I'd been working twenty minutes in Excel when the copy I had 'went away'. I looked in task manager -- it was _there_ just couldn't see it. So, this brought it back:

EXAMPLE:

PS~MBEE1>type .\get-excel.vbs
Option Explicit
Dim oExcel
Set oExcel=GetObject(,"Excel.Application")
oExcel.Visible=vbTrue
PS~MBEE1>cscript //nologo //e:vbscript get-excel.vbs


Automation is _wonderful_.

9.05.2012

Example multi-thread ora client...

Not a _working_ example - but, at least a sample to follow in creating a multi-thread oracle client. It generates a number of simultaneous oraclient extracts -- then waits on completion before submitting more.

cmdlets involved: start-process,get-process,get-date

param([STRING]`
$psFROM='',`
$pnDAYS=1,`
$pnOracleCli=100,`
$pnINCR=-1) `
#Must be the first statement in your script
CLEAR-HOST
#   history:
#                   ~   $psFROM     date starting point 
#                   ~   $pnDAY      number to iterate[default 1] 
#                   ~   $pnINCR     whether back (-1) or forward (1)
#                   ~   $pnOraCli   number of clients to allow in tandem
$ldFROM   =(GET-DATE);$ldSTOP   =(GET-DATE);$ldTO     =(GET-DATE);
$lsFROM   =GET-DATE;$lsSTOP   =GET-DATE;$lsTO     =GET-DATE;

$lnDAYS      =0;$lnINCR      =$pnINCR;$lnOracleCli =$pnOracleCli;

if ($psFROM -ne $empty)
{$ldFROM  =GET-DATE   "$psFrom"   -FORMAT "dd-MMM-yyyy"}
else
{$ldFROM         =   GET-DATE}
$ldSTOP         =   (GET-DATE $ldFROM ).AddDays($pnDAYS*$pnINCR)
$ldTO           =   $ldFROM
$lsFROM         =   GET-DATE $ldFROM    -FORMAT "dd-MMM-yyyy"
$lsTO           =   GET-DATE $ldFROM    -FORMAT "dd-MMM-yyyy"
$lsSTOP         =   GET-DATE $ldSTOP    -FORMAT "dd-MMM-yyyy"
#at this point the dates s/b set now transform into
#how they're used in main part of script (in terms of format and type)
#start of loop
write-host "#-";
WRITE-HOST "# OraCli limit~$pnOracleCli~SO no daywidgets(16) X 5 DAYS = 90..."
$iDAYCOUNT=0;
while($ldFROM -ne $ldSTOP){
    WRITE-HOST "# Extracting Data For $lsFROM THRU $lsTO...stopping at $DATESTOP"
    START-PROCESS `
      -FILEPATH C:\ORANT\BIN\PLUS33.EXE `
      -WORKINGDIRECTORY m:\ `
      -WINDOWSTYLE MINIMIZED `
      -ARGUMENTLIST "$duserid/$dpassword@d @C:\yourQUERY.PDC Chunk1 $lsFROM $lsTO"
    START-PROCESS `
      -FILEPATH C:\ORANT\BIN\PLUS33.EXE `
      -WORKINGDIRECTORY m:\ `
      -WINDOWSTYLE MINIMIZED `
      -ARGUMENTLIST  "$duserid/$dpassword@d @C:\yourQUERY.PDC chunk2 $lsFROM $lsTO"
    START-PROCESS `
      -FILEPATH C:\ORANT\BIN\PLUS33.EXE `
      -WORKINGDIRECTORY m:\ `
      -WINDOWSTYLE MINIMIZED `
      -ARGUMENTLIST "$duserid/$dpassword@d @C:\yourQUERY.PDC chunk3 $lsFROM $lsTO"
...
    $iDAYCOUNT=$iDAYCOUNT+1;
    $ldFROM    =(get-date $lsFROM).adddays($lnINCR)
    $ldTO      =(get-date $lsTO).adddays($lnINCR)
    $lsFROM    =GET-DATE $ldFROM  -FORMAT "dd-MMM-yyyy"
    $lsTO      =GET-DATE $ldTO    -FORMAT "dd-MMM-yyyy"
    $iDAYCOUNT_MOD_5=$iDAYCOUNT % 5;
    if ($iDAYCOUNT_MOD_5 -eq 0){
        $iDAYCOUNT=0
        $I=0;
        $GPE=GET-PROCESS -NAME PLUS33 -ERRORACTION SILENTLYCONTINUE;
        FOREACH($P IN $GPE){
          IF($P.ID -NE $NULL){$I=$I+1}};
        $sqlplus_COUNT=$I;
        WRITE-HOST "#-"
        WRITE-HOST "# Spawn then wait for Oraclient(s) to finish..."
        WRITE-HOST "#-"
        $begin=GET-DATE
        WRITE-HOST "# $begin"
        while ($sqlplus_COUNT -ne 0){
            start-sleep -s 10
            $I=0;
            $GPE=GET-PROCESS `
              -NAME PLUS33 `
              -ERRORACTION SILENTLYCONTINUE;
            FOREACH($P IN $GPE){
                IF($P.ID -NE $NULL){
                    $I=$I+1
                }
            };
            $sqlplus_COUNT=$I;
        }
    }
}
write-host "#-"
write-host "# done..."
write-host "#-"
$done=get-date
write-host "# $d"