gpt4 book ai didi

powershell - 使用PowerShell替换字符串中包含+的字符串

转载 作者:行者123 更新时间:2023-12-02 23:40:19 25 4
gpt4 key购买 nike

我正在尝试使用PowerShell做一个简单的查找和替换。本质上,我以前在目录中有一些支持文件,它们的名称与“主”文件相同。除一个支持文件外,所有其他不再需要。 “主”文件的文本引用指向另一个文件的路径。我想要做的是在“主”文件中修改此路径,以删除已删除的目录。

例如,假设我有一个文件C:\Temp\this+that.txt,该文件以前是C:\Temp\this+that\this+that.dat的文件,现在已移至C:\Temp\this+that.datC:\Temp\this+that.txt中有这样一行:

/temp/this+that/this+that.dat

我希望这条线成为:
/temp/this+that.dat

我有许多批处理文件正在移动的文件。对于不包含加号 +的所有文件名,使用下面的powershell命令可以使一切正常。对于这些文件,下面的调用不起作用。
powershell -Command "(gc '!CURRENT_FILE!') -replace '/!BASE_NAME!/', '/' | Set-Content '!CURRENT_FILE!'"

对于上面的示例, CURRENT_FILE将为 C:\Temp\this+that.txtBASE_NAME将为 this+that
谁能帮我解决为什么对于带有加号 +的文件名不起作用的原因?

最佳答案

@ma_il完全正确。 “+”字符是RegEx中的特殊字符,因此您需要对其进行转义。

powershell -Command "(gc '!CURRENT_FILE!') -replace [regex]::escape('/!BASE_NAME!/'), '/' | Set-Content '!CURRENT_FILE!'"

关于powershell - 使用PowerShell替换字符串中包含+的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166084/

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