[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

在目录下我有有些文本如下
&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怎么写的谢谢大家

回复 3# 786021512


试试这样设置一下能运行吗
http://bbs.bathome.net/thread-31071-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

看样子 楼主的系统是 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=====================

TOP

回复 3# 786021512


    什么操作系统?哪个版本的PowerShell呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# xczxczxcz
是的但是我powershell不会用用了上述以后一闪而过,是我哪里设置的不对吗

TOP

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。===============

TOP

返回列表