Bagaimana saya bisa mengubah kode berikut untuk melihat semua file .log di direktori dan bukan hanya satu file?
Saya perlu mengulang semua file dan menghapus semua baris yang tidak mengandung "step4" atau "step9". Saat ini ini akan membuat file baru, tapi saya tidak yakin bagaimana menggunakan for each
loop di sini (pemula).
File sebenarnya diberi nama seperti ini: 2013 09 03 00_01_29.log . Saya ingin file output untuk ditimpa, atau memiliki nama SAMA, ditambahkan dengan "keluar".
$In = "C:\Users\gerhardl\Documents\My Received Files\Test_In.log"
$Out = "C:\Users\gerhardl\Documents\My Received Files\Test_Out.log"
$Files = "C:\Users\gerhardl\Documents\My Received Files\"
Get-Content $In | Where-Object {$_ -match 'step4' -or $_ -match 'step9'} | `
Set-Content $Out
powershell
pengguna2725402
sumber
sumber
BaseName
denganFullName
saya mendapatkan apa yang saya inginkan.Untuk mendapatkan konten direktori yang bisa Anda gunakan
Kemudian Anda dapat mengulangi variabel ini juga:
Cara yang lebih mudah untuk menempatkan ini adalah
foreach
loop (terima kasih kepada @Soapy dan @MarkSchultheiss):sumber
$files = Get-ChildItem "C:\Users\gerhardl\Documents\My Received Files\" $files | Where-Object { $outFile = $_.Name + "out" Get-Content $_.FullName | Where-Object { $_ -match 'step4' -or $_ -match 'step9' } | Set-Content $outFile }
foreach ($f in Get-ChildItem "C:\Users\gerhardl\Documents\My Received Files\") { ... }
ForEach ($f in $files){...}
Jika Anda perlu mengulang di dalam direktori secara rekursif untuk jenis file tertentu, gunakan perintah di bawah ini, yang memfilter semua
doc
file tipe file$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc
Jika Anda perlu melakukan penyaringan pada beberapa jenis, gunakan perintah di bawah ini.
$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc,*.pdf
Sekarang
$fileNames
variabel bertindak sebagai array yang darinya Anda dapat mengulang dan menerapkan logika bisnis Anda.sumber
-Force
parameter untuk Get-ChildItem. Lihat dokumennya di docs.microsoft.com/en-us/powershell/module/… .Jawaban lain sangat bagus, saya hanya ingin menambahkan ... pendekatan berbeda yang dapat digunakan di PowerShell: Instal utils GNUWin32 dan gunakan grep untuk melihat baris / mengarahkan output ke file http://gnuwin32.sourceforge.net/
Ini menimpa file baru setiap kali:
Ini menambahkan output log, jika Anda menimpa file logIn dan ingin menyimpan data:
Catatan: untuk dapat menggunakan utils GNUWin32 secara global Anda harus menambahkan folder bin ke jalur sistem Anda.
sumber