遍历文件夹中包含不同文件扩展名的所有文件

时间:2016-11-03 12:31:23

标签: windows powershell file-extension

我试图遍历所有文件,无论文件类型如何,并使用用户输入的字符串更改字符串。

我现在可以使用下面的代码执行此操作,但只能使用一种类型的文件扩展名。

这是我的代码:

= warning: this was previously accepted by the compiler but is being phased out;
  it will become a hard error in a future release!
= note: for more information,
  see RFC 1445 <https://github.com/rust-lang/rfcs/pull/1445>

无论扩展名如何,我如何遍历文件? 所以无论是md,txt还是cshtml还是其他,它都会按照指示替换字符串。

1 个答案:

答案 0 :(得分:2)

要获取文件夹中的所有文件,您可以使用Get-ChildItem。添加-Recurse开关也包含子文件夹中的文件。

E.g。你可以像这样重写你的脚本

$path = 'c:\tmp\test'
$NewString = Read-Host -Prompt 'Input New Name Please'
$OldString  = 'SolutionName'

Get-ChildItem -Path $path  | where {!$_.PsIsContainer} | foreach { (Get-Content $_).Replace($OldString,$NewString) | Set-Content -Path $_.FullName }

这将首先从$path中定义的文件夹中获取所有文件,然后将$OldString中给出的值替换为用户在提示时输入的内容,最后保存文件。

注意:如果文件内容是否发生变化,脚本没有任何区别。这将导致所有文件修改日期更新。如果此信息对您很重要,那么您需要在更改文件并保存之前添加一项检查以查看文件是否包含$OldString