Powershell - 在分隔符后删除所有内容 - 在文件夹中找到文本文件

时间:2016-03-03 19:58:24

标签: powershell directory

我想从一堆文本文件中删除内容。

在每个文本文件中 - 删除******之后的所有内容

$Path = "C:\Users\Desktop\Delete\*.txt"       # Folder Containing Text files  
$OutPath = "C:\Users\Desktop\Files\"    

Get-Content c.txt | Where { $_ -notmatch "*****" } | Set-Content $OutPath

我见过这个powershell delete everything after character for every line in a file

我无法让它工作

我是电源外壳的新手,请原谅我的代码。

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用-Delimiter的{​​{1}}参数轻松完成此操作:

免责声明:未经测试

Get-Content

答案 1 :(得分:1)

您可以通过将整个文件作为一个字符串读取并使用-Replace来进行RegEx匹配。

$OutPath = "C:\Users\Desktop\Files\"
ForEach($File in Get-ChildItem "C:\Users\Desktop\Delete\*.txt"){
    (Get-Content $File.FullName -Raw) -Replace "(?s)^(.*?\*{5,}).*", '$1' | Set-Content $OutPath + $File.Name
}

模式匹配解释here