本帖最后由 WHY 于 2023-1-13 20:45 编辑
- <# :
- @echo off
- md "%~dp0Result" 2>nul
- PowerShell -C ". ([ScriptBlock]::Create((gc -Literal '%~f0') -join \"`r`n\")) '%~dp0' '%~dp0Result'"
- pause & exit
- #>
-
- param($myPath, $dstPath);
-
- forEach( $file In (dir -Literal $myPath -Filter *.log) ){
- $logFile = $file.FullName; #log文件名
- $txtFile = $file.FullName -replace '\.log$', '.txt'; #txt文件名
- if( ![IO.File]::Exists($txtFile) ){ continue; } #判断txt文件是否存在
-
- $Hash = @{}
- $arr1 = gc -Literal $logFile -ReadCount 0; #log文本存入数组arr1
- for($i=0; $i -lt $arr1.Count; $i++){ #遍历数组arr1
- if($arr1[$i] -ne '' -and !$Hash.ContainsKey($arr1[$i])){ #删除空行、重复行
- $Hash.Add($arr1[$i], $true); #存入哈希表
- }
- }
-
- $arr2 = gc -Literal $txtFile -ReadCount 0; #txt文本存入数组arr2
- $n = 0;
- for($i=0; $i -lt $arr2.Count; $i++){ #遍历数组arr2
- $curStr = $arr2[$i]; #当前行
- if($Hash.ContainsKey($curStr) -and $curStr -ne $preStr){
- $arr2[$i] = '' + ++$n + '、《' + $curStr + '》';
- }
- $preStr = $curStr; #上一行
- }
-
- $dstFile = $dstPath + '\' + $file.BaseName + '.txt'; #目标文件名
- [IO.File]::WriteAllLines($dstFile, $arr2, [Text.Encoding]::Default); #保存
- }
复制代码
|