[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
powershell 用法搜索.
  1. # 先备份,会直接修改原文件。
  2. $组 = @{}
  3. $替换 = gc 替换.txt
  4. for ( $i=0; $i -lt $替换.count; $i++ ) {
  5. if (!($i % 2)) {
  6. $key=$替换[$i]
  7. } else {
  8. $组["$key"]=$替换[$i]
  9. }
  10. }
  11. $Content = ( gc work.txt -readcount 0 -enc Default ) -join "`r`n"
  12. Foreach ( $key in $组.keys ) {
  13. if ( ($Content -Split "$key").Count -le 2 ) {
  14. $Value = $组["$key"]
  15. $Content = $Content -replace "$key","$Value"
  16. } else {
  17. for ( $i=0; $i -lt $替换.count; $i++ ) {
  18. if ( $替换[$i] -eq "$key" ) {
  19. Write-Host "第 $($i+1) 行存在多处错误`n$key`r`n" -fore Magenta -back DarkBlue
  20. }
  21. }
  22. }
  23. }
  24. $Content | sc .\work.txt -enc Default
  25. CMD /C "echo;&pause" #兼容PS2.0
复制代码

TOP

回复 6# 爱琴海不会走

增加找不到的也提示。可能开始看错了,以为只要输出存在多处的。
  1. $组 = @{}
  2. $替换 = gc 替换.txt
  3. for ( $i=0; $i -lt $替换.count; $i++ ) {
  4. if (!($i % 2)) { $key = $替换[$i] } else { $组["$key"] = $替换[$i] }
  5. }
  6. $Content = ( gc work.txt -readcount 0 -enc Default ) -join "`r`n"
  7. Foreach ( $key in $组.keys ) {
  8. $num = ($Content -Split "$key").Count
  9. if ( $num -eq 2 ) {
  10. $Value = $组["$key"]
  11. $Content = $Content -replace "$key","$Value"
  12. } else {
  13. for ( $i=0; $i -lt $替换.count; $i++ ) {
  14. if ( $替换[$i] -eq "$key" ) {
  15. if ( $num -gt 2 ) {
  16. Write-Host "第 $($i+1) 行存在多处错误`n$key`r`n" -fore Yellow -back DarkRed
  17. } else {
  18. Write-Host "第 $($i+1) 行找不到`n$key`r`n" -fore Magenta -back DarkBlue
  19. }
  20. }
  21. }
  22. }
  23. }
  24. $Content | sc .\work.txt -enc Default
  25. CMD /C "echo;&pause" # 兼容 PS2.0
复制代码
========睡了会,精神多了===========

TOP

返回列表