[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2023-1-13 20:45 编辑
  1. <# :
  2. @echo off
  3. md "%~dp0Result" 2>nul
  4. PowerShell -C ". ([ScriptBlock]::Create((gc -Literal '%~f0') -join \"`r`n\")) '%~dp0' '%~dp0Result'"
  5. pause & exit
  6. #>
  7. param($myPath, $dstPath);
  8. forEach( $file In (dir -Literal $myPath -Filter *.log) ){
  9.     $logFile = $file.FullName;                             #log文件名
  10.     $txtFile = $file.FullName -replace '\.log$', '.txt';   #txt文件名
  11.     if( ![IO.File]::Exists($txtFile) ){ continue; }        #判断txt文件是否存在
  12.     $Hash = @{}
  13.     $arr1 = gc -Literal $logFile -ReadCount 0;             #log文本存入数组arr1
  14.     for($i=0; $i -lt $arr1.Count; $i++){                   #遍历数组arr1
  15.         if($arr1[$i] -ne '' -and !$Hash.ContainsKey($arr1[$i])){  #删除空行、重复行
  16.             $Hash.Add($arr1[$i], $true);                   #存入哈希表
  17.         }
  18.     }
  19.         
  20.     $arr2 = gc -Literal $txtFile -ReadCount 0;             #txt文本存入数组arr2
  21.     $n = 0;
  22.     for($i=0; $i -lt $arr2.Count; $i++){                   #遍历数组arr2
  23.         $curStr = $arr2[$i];                               #当前行
  24.         if($Hash.ContainsKey($curStr) -and $curStr -ne $preStr){
  25.             $arr2[$i] = '' + ++$n + '、《' + $curStr + '》';
  26.         }
  27.         $preStr = $curStr;                                 #上一行
  28.     }
  29.     $dstFile = $dstPath + '\' + $file.BaseName + '.txt';   #目标文件名
  30.     [IO.File]::WriteAllLines($dstFile, $arr2, [Text.Encoding]::Default); #保存
  31. }
复制代码
1

评分人数

TOP

谢谢大神,学习了

TOP

回复 14# xp3000


    试试这个
  1. gawk "NR==FNR{text[$0] = NR \"、《\" $0 \"》\";next}{if(A!=$0)if($0 in text){A=$0;$0=text[$0]}}1" 文本.log 文本.txt>修改后的文本.txt
复制代码
1

评分人数

TOP

  1. @echo off
  2. rem 所有文件存为ANSI编码
  3. for /f "delims=" %%f in ('dir /b *.log') do (
  4.      setlocal enabledelayedexpansion
  5.      for /f "usebackq tokens=*" %%i in ("%%f") do set ""%%i"=1"
  6.      if exist "%%~nf.txt" (
  7.           (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%~nf.txt"') do (
  8.                if defined "%%b" (
  9.                     if "!m!" == "!n!" (
  10.                          set/a n+=1,m=0
  11.                          echo;!n! 《%%b》
  12.                     ) else echo;%%b
  13.                )  else echo;%%b&set m=!n!
  14.           ))>"temp_%%f"
  15.      ) else echo;%%f对应文件不存在
  16.      endlocal
  17. )
  18. pause
复制代码
1

评分人数

TOP

回复 19# terse
谢谢,可以用

TOP

回复 18# hfxiang

还是会出问题,像8楼一样
文本.txt
  1. 岳阳楼
  2. 春色醉巴陵,阑干落洞庭。
  3. 水吞三楚白,山接九疑青。
  4. 空阔鱼龙气,婵娟帝子灵。
  5. 何人夜吹笛,风急雨冥冥。
  6. 岳阳楼
  7. 岳阳楼
  8. 岳阳楼上日衔窗,影到深潭赤玉幢。
  9. 怅望残春万般意,满棂湖水入西江。
  10. 黄鹤楼
  11.   昔人已乘黄鹤去,此地空余黄鹤楼。
  12.   黄鹤一去不复返,白云千载空悠悠。
  13.   晴川历历汉阳树,芳草萋萋鹦鹉洲。
  14.   日暮乡关何处是,烟波江上使人愁。
复制代码
文本.log
  1. 岳阳楼
  2. 岳阳楼
  3. 黄鹤楼
复制代码
复制代码
这种情况,代码都出现了问题

TOP

返回列表