You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell:基于另一文件内容更新文件,在.pdf前添加1

PowerShell 批量修改File2.txt中PDF路径的解决方案

没问题,我来帮你搞定这个需求!你要做的就是在File2.txt每条记录的.pdf后缀前添加一个1,比如把\\Serv02\LOC6\Client\726C30\032383\22000180231.pdf改成\\Serv02\LOC6\Client\726C30\032383\220001802311.pdf对吧?下面给你两种可靠的PowerShell实现方式:

方式一:高效批量替换(单命令完成)

这个方法一次性读取整个文件内容,用正则替换后写回,速度更快:

# 注意:执行前请先备份File2.txt!该命令会直接覆盖原文件
(Get-Content -Path "File2.txt" -Raw) -replace '\.pdf$', '1.pdf' | Set-Content -Path "File2.txt" -Encoding UTF8

说明:

  • -Raw参数让PowerShell一次性读取整个文件内容,避免逐行处理的额外开销
  • 正则'\.pdf$'专门匹配行尾的.pdf(确保只修改路径最后的PDF后缀,不会误改路径中间可能出现的点字符)
  • -Encoding UTF8保证文件编码不会出现乱码问题

方式二:逐行处理(适合需要额外逻辑扩展的场景)

如果你之后需要在处理每行时添加其他操作,比如筛选特定路径,可以用逐行处理的方式:

# 读取原文件内容
$originalLines = Get-Content -Path "File2.txt"
# 逐行处理:在每行的.pdf前添加1
$modifiedLines = $originalLines | ForEach-Object {
    $_ -replace '\.pdf$', '1.pdf'
}
# 将处理后的内容写回文件(同样建议先备份原文件)
$modifiedLines | Set-Content -Path "File2.txt" -Encoding UTF8

为什么之前正则可能只部分生效?

你之前用正则更新时部分失效,大概率是因为正则没有精准匹配行尾的.pdf——比如如果你的正则没加$(行尾锚定符),可能会误匹配路径中间的点字符,或者有些行的.pdf前面有空格?不过你说每行无空格,那更可能是没有锚定行尾,导致某些特殊路径没匹配到。上面的正则'\.pdf$'就解决了这个问题,确保只处理每条记录末尾的PDF后缀。

内容的提问来源于stack exchange,提问作者DataLore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:13:13