在每次迭代时删除创建的文件

时间:2017-06-22 14:53:48

标签: powershell

$getFiles = Get-ChildItem -Path $readDir -File -Include "*.doc","*.docx","*.xlsx"-Recurse | %{


    if(($_ -match "\.doc$") -or ($_ -match "\.docx$")){
        $Doc = $word.Documents.Open($_.fullname)
        $nameDoc = $fileSaveLoc + $_.Name.Replace(".docx",".txt").replace(".doc",".txt")
        $Doc.saveas([ref] $nameDoc, [ref] 5)
        $Doc.close()

        if((Get-ChildItem "I:\temp\").length -ne 0){
            $locations = (Get-Item "I:\temp\"), (Get-ChildItem "I:\temp\" -Directory -recurse) | % {
            Get-ChildItem -File $_.FullName | Select-String -List -Pattern '^\d{3}-?\d{2}-?\d{4}$' | 
            % Path
            }

            if($locations -ne $null){
                $locations | out-file "I:\temp\SSN_FILES.txt"
                #Get-ChildItem "I:\temp\" -exclude "fullpath.txt","SSN_FILES.txt" | remove-item
            }else{
                Get-ChildItem "I:\temp\" -exclude "fullpath.txt","SSN_FILES.txt" | remove-item
            }   
        }
    }
    elseif($_ -match "\.xlsx$"){ 
        $workbook = $excel.Workbooks.Open($_.FullName)
        $csvFilePath = "I:\temp\" + $_.Name.Replace(".xlsx",".csv") 
        #$csvFilePath = $_.FullName -replace "\.xlsx$", ".csv"
        $workbook.SaveAs($csvFilePath, [Microsoft.Office.Interop.Excel.XlFileFormat]::xlCSV)
        $workbook.Close()

        if((Get-ChildItem "I:\temp\").length -ne 0){
            $locations = (Get-Item "I:\temp\"), (Get-ChildItem "I:\temp\" -Directory -recurse) | % {
            Get-ChildItem -File $_.FullName | Select-String -List -Pattern '^\d{3}-?\d{2}-?\d{4}$' | 
            % Path
            }

            if($locations -ne $null){
                $locations | out-file "I:\temp\SSN_FILES.txt"
                #Get-ChildItem "I:\temp\" -exclude "fullpath.txt","SSN_FILES.txt" | remove-item
            }else{
                Get-ChildItem "I:\temp\" -exclude "fullpath.txt","SSN_FILES.txt" | remove-item
            }   

        }
    }
} 

所以这基本上说:

  • 检查匹配doc / docx / xlsx
  • 的文件
  • 将它们转换为可以通过
  • 解析的文件
  • 在每次迭代时解析每个文件并将其与正则表达式进行比较
  • 如果正则表达式不为null,则将其输出到具有文件路径
  • 的文件
  • 否则,删除它以及除两个文件外创建的任何其他内容
  • 在下一个文件重新启动该过程

现在我遇到的问题是文件没有被删除。当我知道它们与正则表达式不匹配时,我无法在创建它们时将它们删除。设置($locations -eq $true)并不能解决这个问题,因为它永远不会进入第一个条件语句。

该文件夹应仅包含已创建的两个文件,可能还包含与正则表达式匹配的文件。

0 个答案:

没有答案