gpt4 book ai didi

windows - 遍历文件夹中具有不同文件扩展名的所有文件

转载 作者:可可西里 更新时间:2023-11-01 10:15:39 25 4
gpt4 key购买 nike

我正在尝试遍历所有文件,无论类型如何,在一个文件夹中,并用用户输入的字符串更改一个字符串..

我现在可以用下面的代码做到这一点,但只能使用一种类型的文件扩展名..

这是我的代码:

$NewString = Read-Host -Prompt 'Input New Name Please'
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition

$InputFiles = Get-Item "$scriptPath\*.md"

$OldString = 'SolutionName'
$InputFiles | ForEach {
(Get-Content -Path $_.FullName).Replace($OldString,$NewString) | Set-Content -Path $_.FullName
}

echo 'Complete'

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

最佳答案

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

例如你可以像这样重写你的脚本

$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

关于windows - 遍历文件夹中具有不同文件扩展名的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com