我目前正在开发一个需要.xml文件的程序,将其读入Oracle数据库,然后导出一个新的.xml文件。但问题是新文件必须与原始文件具有完全相同的名称。
我将原始文件名保存到.txt文件中,我现在正在尝试在行内搜索关键字,以便在.txt文件中使用正确的名称重命名正确的文件。这是一个例子:
我的4个文件(从数据库导出):
PM.Data_information.xml
PM.Data_location.xml
PM.Cover_quality.xml
PM.Cover_adress.xml
Namefile.txt的内容(原始名称):
PM.Data_information_provide_SE-R-SO_V0220_657400509_3_210.xml
PM.Data_location_provide_SE-R-SO_V0220_9191200509_3_209.xml
PM.Cover_quality_provide_SE-R-SO_V0220_354123509_3_211.xml
PM.Cover_adress_provide_SE-R-SO_V0220_521400509_3_212.xml
我只通过选择亚麻布来确定如何获得一条线:
$content = Get-Content C:\Namefile.txt
$informationanme = $content[0]
Rename-Item PM.Data_information.xml -NewName $informationname
有没有办法通过搜索字符串中的关键字来选择该行?
答案 0 :(得分:1)
$content = Get-Content C:\temp\ps\NewFile.txt
$files = Get-ChildItem c:\temp\ps\
$content |
%{
$currentLine = $_
$file = $files | Where-Object { $currentLine.StartsWith($_.Name.Replace(".xml", "")) }
Rename-Item $file.Name $currentLine
}
这段代码可以解决问题。请注意,您需要将所有需要重命名的文件放在一个文件夹中。将文件夹路径设置为$files
变量(当前设置为c:\temp\ps
)。设置NewFile.txt
到$content
路径的路径。
代码通过循环NewFile.txt
中的每一行并查找名称与行开头匹配的任何文件(如果有任何文件不遵循此模式,您显然需要更新代码,但希望给你一个很好的起点)。
答案 1 :(得分:0)
其他解决方案;)
gci -Path "c:\temp" -File -Filter "*.xml" | % { rni $_.fullname (sls "C:\temp\Namefile.txt" -Pattern ([System.IO.Path]::GetFileNameWithoutExtension($_.fullname))).Line }