如何用PowerShell批量校验Excel A列文件夹路径并回填B列结果
实现步骤
前置准备
首先推荐安装PowerShell的Excel处理模块ImportExcel,该模块无需本机安装Office即可读写Excel文件,安装命令:
Install-Module -Name ImportExcel -Scope CurrentUser -Force
如果你的电脑已经安装了Office,也可以选择文末的COM对象实现方案,不需要额外安装模块。
无表头Excel场景(A列第一行开始就是文件夹路径)
直接使用以下脚本,替换第一行的Excel文件路径为你自己的文件路径即可:
# 替换为你的Excel文件实际路径 $excelPath = "C:\Users\xxx\Desktop\路径校验.xlsx" # 读取Excel内容,无表头默认列名为P1(A列)、P2(B列)以此类推 $pathList = Import-Excel -Path $excelPath -NoHeader # 遍历校验路径 foreach ($row in $pathList) { $isExist = Test-Path -Path $row.P1 -PathType Container $row.P2 = $isExist ? "OK" : "error" } # 结果写回原Excel,覆盖原有内容 $pathList | Export-Excel -Path $excelPath -NoHeader -ClearSheet -Force
有表头Excel场景(比如A列表头是「文件夹路径」,B列表头是「校验结果」)
修改脚本内的列名对应你的表头即可:
# 替换为你的Excel文件实际路径 $excelPath = "C:\Users\xxx\Desktop\路径校验.xlsx" # 读取带表头的Excel内容 $pathList = Import-Excel -Path $excelPath # 遍历校验路径,列名替换为你实际的表头名 foreach ($row in $pathList) { $isExist = Test-Path -Path $row.文件夹路径 -PathType Container $row.校验结果 = $isExist ? "OK" : "error" } # 结果写回原Excel,覆盖原有内容 $pathList | Export-Excel -Path $excelPath -ClearSheet -Force
基于Office COM对象的实现方法(无需安装ImportExcel模块,需本机安装Excel)
如果不想安装第三方模块,可以用以下脚本:
# 替换为你的Excel文件实际路径 $excelPath = "C:\Users\xxx\Desktop\路径校验.xlsx" # 启动Excel COM对象 $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $workbook = $excel.Workbooks.Open($excelPath) $sheet = $workbook.Sheets.Item(1) # 获取A列已使用的行数 $rowCount = $sheet.UsedRange.Rows.Count # 从第1行开始遍历,有表头就把1改成2 for ($i=1; $i -le $rowCount; $i++) { $path = $sheet.Cells.Item($i, 1).Text $isExist = Test-Path -Path $path -PathType Container $sheet.Cells.Item($i, 2) = $isExist ? "OK" : "error" } # 保存关闭 $workbook.Save() $workbook.Close() $excel.Quit() # 释放COM对象避免残留Excel进程 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
内容的提问来源于stack exchange,提问作者ASD
相关产品推荐
相关产品推荐

