【发布时间】:2018-02-06 18:49:51
【问题描述】:
我在 StackOverFlow 上搜索了所有内容,包括这里,但我似乎找不到我需要帮助的解决方案。这是我的问题。
假设在 File1.txt 我有以下内容(每行之间没有空格)
\\Serv02\LOC6\Client\726C30\032383\2200018023.pdf
\\Serv02\LOC6\Client\726C30\032383\2200718091.pdf
\\Serv02\LOC6\Client\726C30\030684\2300309040.pdf
\\Serv02\LOC6\Client\726C30\031274\2300429971.pdf
File2.txt 将具有相同的信息,但是,我需要在每个 .pdf 之前添加一个 1(在 file2.txt 中)
示例:
\\Serv02\LOC6\Client\726C30\032383\22000180231.pdf
我可以使用 RegEx 语句轻松更新 file2.txt,但它只是根据该 RegEx 语句更新内容。
File2.txt 比 file1.txt 包含更多的数据(更多的确切类型的信息)。我只需要根据 file1.txt 中的内容更新 file2.txt,在 .pdf 之前添加 1
这是我正在使用的代码,但正如您所见,它根本不读取 file1.txt,我只是使用 RegEx 语句来更新 file2.txt,在 .pdf 之前添加 1(下面的代码有效在.pdf之前添加1,但我没有遍历file1.txt)
clear-host
set-location c:\temp
$File = "C:\Temp\file1.txt"
$FileZ = "C:\Temp\file2.txt"
$File2 = (Get-ChildItem $fileZ) | Select -ExpandProperty BaseName
$regex01 = '(\\Serv02\LOC6\Client\726C30\\d{1,6}\\d{1,10})(.pdf)$'
get-content $fileZ | % { $_ -replace $regex01, '${1}1${2}' -join "`r`n" } | out-file -Encoding default "c:\Temp\$File2.txt"
start-sleep -Seconds 2
$NewMRC = Get-ChildItem "$file2.txt" | Select -ExpandProperty Name
Get-ChildItem $NewMRC | rename-item -NewName {$_.Name -replace ".txt",".MRC2"}
如果 file1.txt 有另一行与上图所示的 RegEx 不匹配,则 file2.txt 不会使用该行更新
\\Serv03\LOC7\Client\780D30\031456\8675309123.pdf
我希望我已经解释得足够好。我对 PowerShell 并不陌生,但我远非专家。非常感谢任何帮助。
【问题讨论】:
-
file1.txt的内容每行开头有三个
\字符? -
没有每行只有两个反斜杠表示服务器名称。这是我的第一篇文章,看起来该网站正在删除第一个反斜杠,所以我添加了另一个,抱歉造成混乱
-
请编辑您的问题以删除空行和多余的
\字符。
标签: regex powershell