私は最大数を決定しようとするスクリプトを書いています。各列の文字の数。各列の最大文字数を調べようとしています。
$path = 'folder path'
$file = Get-ChildItem $path\*
$FileContent = foreach ($files in $file) {
$FileHeader = @((Get-Content $files -First 1).Split($delimiter))
$importcsv = @(Import-Csv $files -Delimiter "$delimiter")
for ($i=0; $i -lt $FileHeader.Length; $i++) {
#select each column
$Column = @($importcsv | select $FileHeader[$i])
#find the max no. of character
$MaxChar = @(($Column[$i] |
Select -ExpandProperty $FileHeader[$i] |
Measure-Object -Maximum -Property Length).Maximum)
$output = New-Object PSObject
$output | Add-Member NoteProperty FullName ($files.FullName)
$output | Add-Member NoteProperty FileName ($files.Name)
$output | Add-Member NoteProperty Time (Get-Date -Format s)
$output | Add-Member NoteProperty FileHeader ($($FileHeader[$i]))
$output | Add-Member NoteProperty MaxCharacter ($($MaxChar[$i]))
Write-Output $output
}
}
上記のスクリプトはそう$delimiter
がすでに定義されている、ちょうどそれの一部である:これは私が書いたものです。最後に結果をCSV形式でエクスポートします。
スクリプトは何のエラーもなく実行されますが、ファイルを開くと、最初の列/ヘッダーには最大の番号しか与えられません。残りの列/ヘッダーが欠落しています。
完全な結果は各列/ヘッダーに最大数を表示します。文字の。
私のループに何か問題がありますか?
私のボスは、生データからすべての情報を検索し、それらの情報をデータベースにアップロードするためのプロセスを自動作成しようとしています。したがって、欠落しているスクリプトの一部は、生ファイルの区切り文字、 $CleanHeader
は$FileHeader
のクリーンバージョンです(すべての特殊文字を削除し、大文字を小文字に変換します)。これらのクリーンヘッダは、データベースのテーブルのヘッダーに使用されます。また、各列の最大文字数を知りたいので、情報でデータベースのテーブルの列サイズを作成することができます(この部分はSQLで実行できることがわかります)。しかし、 PowerShellで行うこともできません。
なぜ最大文字数を知る必要がありますか?列ではどういう意味ですか?あなたは長い名前のファイルを見つける方法を尋ねていますか? –
PowerShellでは実行できないものはほとんどありません。そのため、「PowerShellでできることはできますか?」という質問に対する答えは、実際には常に「はい」です。本当の疑問は、XXXを実装するのにどれだけの労力がかかりますか? –