gpt4 book ai didi

如果不存在,Powershell 将文本添加到文件

转载 作者:行者123 更新时间:2023-12-04 23:48:30 26 4
gpt4 key购买 nike

我想创建一个将文本添加到 *.jsp *.sh *.cmd 文件的 Powershell 脚本。我还希望它检查该文件中是否已存在该文本,如果存在,则它会跳过该文件。到目前为止,我已经找到了 Select-String 它将在文件中找到文本。然后我如何使用此信息将文本添加到没有文本的文件的顶部?我还发现 Add-Content 似乎添加了我想要的内容,但我想在开始时这样做,并且有一些逻辑,而不是每次运行 ps1 时都继续重新添加它。

Select-String -Pattern "TextThatIsInMyFile" -Path c:\Stuff\batch\*.txt

Add-Content -Path "c:\Stuff\batch\*.txt" -Value "`r`nThis is the last line"

最佳答案

与@MikeWise 所拥有的非常相似,但优化得更好。我让它提取数据并使提供者过滤返回的文件(比之后过滤要好得多)。然后我将它传递给 Where声明使用 Select-String-quiet参数以向 Where 提供 bool 值 $true/$false。这样,甚至只查看您想要查看的文件,并且只更改那些缺少您需要的文本的文件。

Get-ChildItem "C:\Stuff\Batch\*" -Include *.jsp,*.sh,*.cmd -File | 
Where{!(Select-String -SimpleMatch "TextThatIsInMyFile" -Path $_.fullname -Quiet)} |
ForEach{
$Path = $_.FullName
"TextThatIsInMyFile",(Get-Content $Path)|Set-Content $Path
}

编辑:当您发现 \*不适用于 -Recursive .如果您需要递归,请使用以下命令:
    Get-ChildItem "C:\Stuff\Batch" -Include *.jsp,*.sh,*.cmd -File -Recurse

关于如果不存在,Powershell 将文本添加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508736/

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