所有子文件夹中每个文件中的Powershell更新字符串

所有子文件夹中每个文件中的Powershell更新字符串,powershell,Powershell,我有一组配置文件存储在目录中的每个子文件夹中。这些配置文件仅包含格式为XXX\u YYYYMMDD的单个字符串,其中XXX是一个数字,例如006、007等,因此示例字符串为006\u 20150101。我希望powershell脚本在每个配置文件中用新的编号替换XXX编号。我正在使用下面的脚本来实现这一点,它工作得很好。但是,问题是它在字符串的末尾添加了一个新行字符(ENTER),这是我不想要的。有办法解决这个问题吗 $sourceDir = "C:\Users\001" $

我有一组配置文件存储在目录中的每个子文件夹中。这些配置文件仅包含格式为
XXX\u YYYYMMDD
的单个字符串,其中
XXX
是一个数字,例如006、007等,因此示例字符串为
006\u 20150101
。我希望powershell脚本在每个配置文件中用新的编号替换
XXX
编号。我正在使用下面的脚本来实现这一点,它工作得很好。但是,问题是它在字符串的末尾添加了一个新行字符(
ENTER
),这是我不想要的。有办法解决这个问题吗

$sourceDir = "C:\Users\001"
$configFiles = Get-ChildItem $sourceDir *.dat -rec
foreach ($file in $configFiles)
{
    (Get-Content $file.PSPath) |
    Foreach-Object { $_ -replace "006", "007" } |
    Set-Content $file.PSPath
}

默认情况下,设置内容以换行符结尾,使用
-NoNewline
不具有此行为:

Set-Content -path $file.PSPath -NoNewline
我不知道您是否可以使用此选项,但您可以使用regex replace来匹配字符串中的前3位数字:

$regex = "^\d{3}"     
# matches any 3 digits("\d{3}") at the beginning("^") of a string

"124_20201030" -replace $regex, "007"

您想用什么来替换每一个?我知道你想用007替换006,但其余的都一样吗?增加一个?谢谢,这个有效!谢谢你的
regex
建议,我现在已经用过了!