我有这样的代码:
$txt = get-content c:\work\test\01.i
$txt[0] = $txt[0] -replace '-'
$txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-'
$txt | set-content c:\work\test\01.i
它只是从文本文件的第一行和最后一行中删除-
,但我需要对目录树中包含超过5k文本文件的所有文本文件执行此操作。我应该如何修改此代码?
所有文本文件名都是随机的。
我需要在powershell中执行此操作。
它是一个目录树,在c:\ work \ test下会有更多的lvl子文件夹,然后包含所有文本文件。
请帮忙。感谢
答案 0 :(得分:3)
通过文件扩展名或某种模式获取所有文件并循环遍历它们。让我们说它是.i
扩展名的所有文件。尝试:
Get-ChildItem -Path "c:\work\test" -Filter *.i -Recurse | where { !$_.PSIsContainer } | % {
$txt = Get-Content $_.FullName;
$txt[0] = $txt[0] -replace '-';
$txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-';
$txt | Set-Content $_.FullName
}