Jump to content

Recommended Posts

Posted

Hi

script read path to pst files from registry and write this informations to txt file. Unfortunately there are stored not needed lines: path  to ost file, other line has string IndexAvailableBodyand first line is blank. How can i remove anything from txt file exept path to pst files ? 

Thanks in advance!

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>
#include <IE.au3>
#include <WinAPIFiles.au3>
#include <FileConstants.au3>
#include <File.au3>
#include <GUIListBox.au3>
#include <Date.au3>



$Form2 = GUICreate("Form1", 405, 294, 633, 264)
$Button1 = GUICtrlCreateButton("Button1", 72, 48, 113, 33)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit


         Case $Button1
         _searchPSTFiles()



    EndSwitch
WEnd



FUNC _searchPSTFiles()

Global $aLines

;$sFileName  = @ScriptDir & "\Pst.txt"
$sFileNameTMP  = @ScriptDir & "\Psttmp.txt"

;IF FileExists ($sFileName) then FileDelete ($sFileName)
IF FileExists ($sFileNameTMP) then FileDelete ($sFileNameTMP)

;$logpathpst = FileOpen($sFileName, $FO_OVERWRITE)
$logpathpsttmp = FileOpen($sFileNameTMP, $FO_OVERWRITE)

Local $Outlookpst[30]

For $i = 1 To 30
    $Outlookpst[$i] = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Search\", $i)
    If @error <> 0 Then ExitLoop
           If $Outlookpst = "" Then
        ContinueLoop
   EndIf
FileWrite($logpathpstTMP, @CRLF & $Outlookpst[$i])
Next

;FileClose ($sFileName)
FileClose ($sFileNameTMP)

EndFunc

 

Posted

Why not just check each entry is:

  1. a string
  2. contains .pst
  3. file exists

For example:

$i = 1
While 1
    $Outlookpst = RegEnumVal("HKCU\Software\Microsoft\Office\16.0\Outlook\Search", $i)
        If @error Then ExitLoop
    If $Outlookpst = "" Or FileExists($Outlookpst) = 0 Or StringRight($Outlookpst, 4) <> ".pst" Then
        $i += 1
        ContinueLoop
    EndIf
    FileWrite($logpathpstTMP, $Outlookpst & @CRLF)
    $i += 1
WEnd

 

Posted

Hi Subz

with line  If $Outlookpst = "" Or FileExists($Outlookpst) = 0 Or StringRight($Outlookpst, 4) <> ".pst" Then i get no result

I use part of your line in my script.WIth for next loop ( line For $j = 2 To $iLinesInFile ) i create new file without first blank line.

Thanks for your suggestion. It helped me.:)

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <array.au3>
#include <IE.au3>
#include <WinAPIFiles.au3>
#include <FileConstants.au3>
#include <File.au3>
#include <GUIListBox.au3>
#include <Date.au3>

GLOBAL $sFileName  = @ScriptDir & "\Pst.txt"
GLOBAL $sFileNameTMP  = @ScriptDir & "\Psttmp.txt"

$Form2 = GUICreate("Form1", 405, 294, 633, 264)
$Button1 = GUICtrlCreateButton("Button1", 72, 48, 113, 33)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit


         Case $Button1
         _searchPSTFiles()



    EndSwitch
WEnd



FUNC _searchPSTFiles()

IF FileExists ($sFileName) then FileDelete ($sFileName)
IF FileExists ($sFileNameTMP) then FileDelete ($sFileNameTMP)

$logpathpst = FileOpen($sFileName, $FO_OVERWRITE)
$logpathpsttmp = FileOpen($sFileNameTMP, $FO_OVERWRITE)

Local $Outlookpst[30]

For $i = 1 To 30
    $Outlookpst = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Search\", $i)

   If $Outlookpst = " " Then ContinueLoop
   If StringRight($Outlookpst, 4) = ".pst" Then

      FileWrite($logpathpstTMP, @CRLF & $Outlookpst)
      ContinueLoop

    EndIf

Next

$iLinesInFile = _FileCountLines($sFileNameTMP)

For $j = 2 To $iLinesInFile

   $sReadLine = FileReadLine($sFileNameTMP, $j)
   FileWriteLine($logpathpst, $sReadLine)

Next


FileClose ($logpathpst)

FileClose ($logpathpsttmp)

FileDelete ($sFileNameTMP)

EndFunc

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...