1行のテキストファイルが区切られたフォルダがあります。あるパターンに一致するファイルを見つけて1つのフォルダに移動し、一致しないものを別のフォルダに移動する必要があります。powershellで4番目のパイプ区切り文字の後に文字を特定し、ファイルを移動します。
例:
FILE1.TXTが国家含まれてい|オハイオ州|ジップ| 43001 | 1 |フレッド|スミス
FILE2.TXTの状態が含まれている|ケンタッキー|ジップ| 40006 | 3 |ヘンリー|ヒギンズ など
powershellを使用して、5番目のフィールド(4番目のパイプ区切り文字の後ろにある)が1などの特定の値に等しいすべてのファイルを見つけて移動する必要があります。次に、5番目のフィールド別のフォルダに1に等しくありません。テキストファイルの内容を変更することはできません。
PowershellとおそらくRegExを組み合わせてファイルを検索して移動することはできません。
ありがとうございました。
[編集] 追加コードが追加されました...希望通りに5番目のフィールドの値を見つけました。私はmoveステートメントをまだ完了していません。コードは最も効率的ではありません。ファイルに埋め込まれていた改行/改行がないため、Get-Content行に "-Raw"を追加しました。認識できないパイプ文字で問題を修正したようです。
$sourcepath = "D:\Infiles"
$destpath1 = "D:\Outfiles1"
$destpath2 = "D:\Outfiles2"
Set-Location $sourcepath
$files = Get-ChildItem -Path $sourcepath -Recurse
foreach ($file in $files)
{
$testtext = Get-Content $file -Raw
$fields = $testtext.Split('|')
$Field5=$fields[4]
# write the output to test the code
Write-Output $Field5
# insert code here to move file to destination path based on the value of $Field5
}
あなたは[MCVE]任意の種類を持っていますか?これまでのコードは? – gravity
ここに正規表現を使用する理由はありません。Powershellには、構造化されたデータを解析し、より便利な方法でそのオブジェクトにアクセスできるようにするコマンドレットがあります。あなたがこれまでに試したことを私たちに教えてください。 – alroc
パイプを区切り文字として使用してcsvをインポートし、私がまだ存在しないカスタムヘッダーを作成します。目的の列をフィルターし、ファイルに出力します。 – Nkosi