如何用PowerShell从每个COBOL文件单独提取注释
为每个COBOL文件单独提取注释的PowerShell方案
修改思路
原代码是将所有文件的注释汇总到单个文件,要实现每个文件单独输出,核心是遍历每个文件时直接生成对应的注释文件,而非先收集所有内容再统一输出。
修改后的代码
# 配置路径:替换成你的COBOL文件目录和注释输出目录 $sourceFolder = 'C:\Users\TextFiles' $outputFolder = 'C:\Users\Desktop\COBOL_Comments' # 自动创建输出目录(不存在则新建) if (-not (Test-Path $outputFolder)) { New-Item -ItemType Directory -Path $outputFolder | Out-Null } # 递归获取所有COBOL源文件 $targetFiles = Get-ChildItem -Path $sourceFolder -File -Recurse -ErrorAction SilentlyContinue foreach ($file in $targetFiles) { # 生成当前文件对应的注释文件名(和原文件同名+_Comments后缀) $commentFile = Join-Path -Path $outputFolder -ChildPath "$($file.BaseName)_Comments.txt" # 写入注释来源标识(可选,方便对应原文件) "=== 来自文件:$($file.FullName) ===" | Out-File -Path $commentFile -Encoding utf8 # 读取当前文件内容 $fileContent = Get-Content $file.FullName # 逐行提取COBOL注释(第7列索引为6,判断是否为*) foreach ($line in $fileContent) { # 先判断行长度避免索引越界,再检查注释标记 if ($line.Length -ge 7 -and $line[6] -eq '*') { $line | Out-File -Path $commentFile -Encoding utf8 -Append } } }
关键说明
- 路径配置:修改
$sourceFolder和$outputFolder为你的实际路径 - 避免索引错误:新增
$line.Length -ge 7判断,防止短行导致的数组索引越界报错 - 文件关联:注释文件名和原文件名绑定(如
TEST.cbl对应TEST_Comments.txt),方便溯源 - 可选调整:如果不需要开头的来源标识,可以删掉写入标识的那一行代码
- 编码适配:如果原COBOL文件使用特殊编码,可在
Get-Content中添加-Encoding参数(如-Encoding OEM)
内容的提问来源于stack exchange,提问作者Jyotsna_Bulchandani
相关产品推荐
相关产品推荐

