ファイルに入るpowershellスクリプトがあり、E:のすべてのインスタンスに対して、それをCBM-FS01|2013-02-03|E:に置き換えます。
$filenames = @("C:\SCRIPT\CBM-FS01-E-20130203114114.txt.out")
foreach ($file in $filenames) {
$outfile = "$file" + ".sql"
Get-Content $file | Foreach-object {
$_ -replace "E:","CBM-FS01|2013-02-03|E:" `
} | Set-Content $outfile
}
よく見ると、ファイル名に基づいてこの情報を取得していることがわかります。ファイル名は常にMNEMONIC-MACHINE-DRIVE-YYYMMDDHHMMSS.txt になります。
いくつかのファイルのスクリプトを変更するのは問題ありませんが、これを 100 個のファイルに対して実行する必要がある可能性があります。powershell を使用して GET-CHILDITEM コマンドレットを使用し、powershell が異なるファイル名に基づいて -replace を自動的に実行する方法はありますか?
編集: ファイル名の一部を抽出し、ファイルに挿入する必要があります。たとえば、ファイルCBM-FS01-E-20130203114114.txtの場合、ニーモニック マシン (CBM-FS01) と YYYMMDD (2013-02-03) をファイルに抽出する必要があります。したがって
$_ -replace "E:","CBM-FS01|2013-02-03|E:" `