2016-10-21 5 views
0

現在、.xmlファイルを必要とするプログラムでは、Oracleデータベースに読み込み、その後、新しい.xmlファイルをエクスポートします。しかし、問題は、新しいファイルが元のファイルとまったく同じ名前でなければならないということです。PowerShellを使用して.txtファイルから複数のファイルの名前を変更します。

元のファイル名を.txtファイルに保存しました。私は現在、行内のキーワードを検索して正しいファイル名を.txtファイル内の正しい名前に変更しようとしています。ここでは例:(データベースからエクスポート)

私の4つのファイル:Namefile.txt(元の名前)の

PM.Data_information.xml 
PM.Data_location.xml 
PM.Cover_quality.xml 
PM.Cover_adress.xml 

内容:

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 

キーワードを検索してその行を選択する方法はありません文字列の中に?

答えて

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 

    } 

このコードは、このトリックを行う必要があります。 1つのフォルダに名前を変更する必要があるすべてのファイルを用意する必要があります。フォルダパスを$files変数に設定します(現在はc:\temp\psに設定されています)。 NewFile.txtのパスを$contentのパスに設定します。

コードは、NewFile.txtの各行をループし、その名前が行の先頭に一致するファイルを検索します(このパターンに従わないファイルがある場合は、明らかにコードを更新する必要がありますが、うまくいけばあなたに良い出発点を与える)。

0

他の溶液;)

gci -Path "c:\temp" -File -Filter "*.xml" | % { rni $_.fullname (sls "C:\temp\Namefile.txt" -Pattern ([System.IO.Path]::GetFileNameWithoutExtension($_.fullname))).Line } 
関連する問題