【问题标题】:How to remove words from all text files in a folder?如何从文件夹中的所有文本文件中删除单词?
【发布时间】:2013-01-21 15:46:04
【问题描述】:

我有这样的代码:

$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 的子文件夹,然后包含所有文本文件。

请帮忙。谢谢

【问题讨论】:

  • 那么你希望能够从指定的文件夹中获取所有文件并循环遍历每个文件。您也许可以从中弄清楚:gallery.technet.microsoft.com/office/…
  • 您需要某种方式来告诉您要触摸哪些文件。文件扩展名,名称模式。我提供了一个答案,您可以根据自己的模式进行修改。前任。如果它们所在的文件夹仅包含这些文件,那么您可以在我的回答中删除-Filter *.i。我们不能触摸所有文件,因为那样它会尝试打开 .exe 文件和 sh*t,它会变得丑陋:P
  • 是的来自 LOL @_@ 的闪电战

标签: powershell powershell-2.0 powershell-3.0 powershell-ise


【解决方案1】:

通过文件扩展名或某种模式获取所有文件并循环遍历它们。可以说这是所有带有.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
    }

【讨论】:

  • 哦,第 1 个问题,如何在目录 tee 结构上运行它?如果 c:\work\test 下只有文件,如果 c:\work\test\ 下有文件夹并且文本文件将在该子文件夹下等等怎么办?
猜你喜欢
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多