找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21459|回复: 5

[问题求助] PowerShell怎样替换文本指定行内容?

[复制链接]
发表于 2018-11-28 18:51:35 | 显示全部楼层 |阅读模式
在目录下我有有些文本如下
&ACCESS
;!******BATHOME*******
BATHOME(NET589WP1234,666666,ACTION)
BATHOME(NET892WP1256,666666,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,666666,ACTION)
BATHOME(NET589WP1266,666666,ACTION)
BATHOME(NET789WP1235_P1,666666,ACTION)

想要变成
&ACCESS
;!******BATHOME*******
BATHOME(NET589WP1234,5891234,ACTION)
BATHOME(NET892WP1256,8921256,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,5231255,ACTION)
BATHOME(NET587WP1266,5871266,ACTION)
BATHOME(NET789WP1235_P1,7891235,ACTION)

也就是把第二节NET后面的3位数字+WP后面的四位数字替换,第三节666666内容
还有一点就是只能替换BATHOME行,不能对batman进行替换
个人苦思冥想实在想不出,只能变其中一行后面就歇菜了
这个已经在BAT版块实现了,想要看看用shell怎么写的谢谢大家
发表于 2018-11-28 21:43:31 | 显示全部楼层
PowerShell 和 Shell 应该是两个不同的东西。你发在Powershell 版块 那你的所指就是Ps了。

  1. Foreach ($line in (gc ".\Ref.txt")){
  2.         if ($line -match "^BATHOME"){
  3.                 $Arr=@($line -Split("NET|WP|,"))
  4.                 $Arr[3]=([string]$Arr[1]+([string]($Arr[2])).Split('_')[0])
  5.                 $str=$Arr[0]+'NET'+[string]$Arr[1]+'WP'+[string]$Arr[2]+','+[string]$Arr[3]+','+$Arr[4]
  6.                 Write-HOST $str -fore Magenta
  7.         } else {
  8.                 Write-HOST $line
  9.         }
  10. }
  11. pause
复制代码
=========不输出。看看就行。保存 XXX.PS1。===============
 楼主| 发表于 2018-11-29 11:24:57 | 显示全部楼层
回复 2# xczxczxcz
是的但是我powershell不会用用了上述以后一闪而过,是我哪里设置的不对吗
发表于 2018-11-29 11:48:44 | 显示全部楼层
回复 3# 786021512


    什么操作系统?哪个版本的PowerShell呢?
发表于 2018-11-29 12:51:04 | 显示全部楼层
看样子 楼主的系统是 WIN7。WIN7默认是不允许运行PS脚本的。WIN8默认会弹出策略选择。只有WIN10才能正常运行。好像PS就是为WIN10准备的一样。其实上面的脚本在PS2.0就可以正常运行。
在WIN7中要运行PS脚本有几个比较首心的办法:法一、打开PS命令行窗口,把脚本内容粘贴进去再回车。
法二、把PS脚本写到 BAT 内容里,运行BAT即可。法三、修改PS策略以便直接运行PS脚本。
----------------------------
把下面的内容保存为 policy.ps1 右键PS运行。或者在PS窗口中粘贴脚本内容,回车。然后你就可以运行 PS 脚本了。

  1. Set-ExecutionPolicy -Scope CurrentUser bypass|select A
  2. pause
复制代码
============enjoy=====================
发表于 2018-11-29 13:31:05 | 显示全部楼层
回复 3# 786021512


试试这样设置一下能运行吗
http://bbs.bathome.net/thread-31071-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:29 , Processed in 0.019734 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表