Not sure that’s what He-Man had in mind, but no bother. I do want to talk about the fact that AI is an incredible tool sometimes. Like a second brain if used correctly. Today I needed a script that would find excel files, and then scrub the file for cell contents matching a certain value.
I decided to give Co-Pilot that very prompt, and I’ll be damned if it didn’t deliver with stunning accuracy. It even correctly interpreted my ask to output the matches in a specific format.
I did make a change or two to be fair. But it mostly hit it dead on the nail.
# Define the volume to search (e.g., "D:\")
$volumePath = Read-Host "Enter Folder Path"
# Define the pattern to search for
$pattern = "=NL()-"
# Define the list to store matching file paths
$matchingFiles = @()
# Get all Excel files recursively
$excelFiles = Get-ChildItem -Path $volumePath -Recurse -Include *.xlsx, *.xlsm, *.xls -ErrorAction SilentlyContinue
foreach ($file in $excelFiles) {
try {
# Open the Excel file using COM object
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open($file.FullName, $null, $true)
foreach ($sheet in $workbook.Sheets) {
$usedRange = $sheet.UsedRange
foreach ($cell in $usedRange.Cells) {
if ($cell.Text -like "*$pattern*") {
$matchingFiles += $file.FullName
break
}
}
}
$workbook.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
} catch {
Write-Warning "Failed to process $($file.FullName): $_"
}
}
# Output the matching file paths
$matchingFiles | Out-File "MatchingExcelFiles.txt"
Write-Host "Matching files saved to MatchingExcelFiles.txt"