博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell替换字符串
阅读量:6208 次
发布时间:2019-06-21

本文共 1471 字,大约阅读时间需要 4 分钟。

在有的时候,可能需要对多个文件中的某个字符串进行替换,我们可以通过PowerShell对文件遍历并替换其字符串。

例:在E:\test目录下存在有多个子目录,我们需要将该目录下xml格式文件中的字符串“nihao”替换为“Hello”,分为以下两个步骤:

1、遍历该目录下的所有*.xml文件

2、对查找出的*.xml文件中的字符串进行替换

使用Get-ChildItem命令可以对文件或目录进行遍历,–Rescure参数遍历子目录,-Include 参数过滤文件类型,如下:

Get-Childitem E:\test -Recurse -Include *.xml

获取到所需要遍历的文件之后,接下来使用Get-Content命令获取文件中的具体内容,由于上一步输出有多个文件,在此使用Foreach语句对每个文件进行操作,读取每个文件中的内容,命令如下:

$files = Get-Childitem E:\test -Recurse -Include *.xml

foreach ($file in $files)

{

$content = get-content $file.pspath

$content

}

Get-Content在读取文件内容的时候,会以“行”为单位,将其放入到一个数组中,所以在替换的时候,还需要使用 Foreach语句对每行进行处理,使用 Replace方法进行替换,命令如下:

foreach ($line in $content)

   {

   $liner = $line.Replace("nihao","Hello")

   } 

在此处需要注意的是,替换完成后,实际上替换后的内容还并没有被真正写入到原文件中,还需要使用Set-Content命令将替换后的内容写入到原文件中,命令如下:

foreach ($line in $content)

   {

   $liner = $line.Replace("nihao","Hello")

   Set-Content $file.pspath -Value $liner

   }

此时仍然会出现一个新的问题,就是每个文件被更新后,只是保留了最后一行的内容,所以在这里不应该使用Set-Content命令,而是应该使用Add-Content命令,将修改后的内容追加到原文件中,但这样一来,新内容和旧内容都会存在于同一个文件中,所以在追加新内容之前,需要先将原文件内容清空,可以使用Clear-Content命令。

完整的脚本命令如下:

copy-item E:\test  F:\ -force -recurse  #在替换之前先对文件进行备份

$files = Get-Childitem E:\test -Recurse -Include *.xml

foreach ($file in $files)   #遍历文件

{

 $content = get-content $file.pspath

  clear-content $file.pspath  #清空每个文件内容

   foreach ($line in $content) #对每个文件中的行进行遍历

   {

   $liner = $line.Replace("nihao","Hello")

   Add-content $file.pspath -Value $liner #附件内容到原文件

   }

 }

 

转载于:https://www.cnblogs.com/dreamer-fish/archive/2013/01/09/2852935.html

你可能感兴趣的文章
php + h5 实现socket推送技术
查看>>
MySQL_体系结构
查看>>
Win7/Win8/Win8.1下配置apache+php运行缓慢问题解决方法
查看>>
SQL联合查询
查看>>
BZOJ1058:[ZJOI2007]报表统计(Splay,堆)
查看>>
Android项目图解
查看>>
摄影测量技术和立体捕捉
查看>>
Catalyst揭秘 Day1 Catalyst本地解析
查看>>
jeecg字典表—普通表
查看>>
结对编程作业
查看>>
【Android】3.23 示例23--瓦片图功能
查看>>
经验&&bug
查看>>
AtCoder Beginner Contest 113 D Number of Amidakuji
查看>>
javascript正则表达式(一)
查看>>
微信小程序上传图片(前端+PHP后端)
查看>>
vue-devtools/安装vue-devtools
查看>>
制作登录表单
查看>>
Struts2 验证规则配置文件
查看>>
Resource is out of sync with the file system的解决办法
查看>>
删除、格式化磁盘后的数据恢复
查看>>