決定從批處理移動到powershell(批處理與WMI有很多相似之處,但我決定真的需要繼續前進)。Powershell從解析文件中填充數組
問題是數組不存在批處理,只是令牌變量。所以我有點塞滿他們。
不過
$Htm = dir *.htm | foreach {Get-Content $_.FullName} | Select-String sell,buy,s/l,t/p,modify | Select-String -NotMatch MM,== | ForEach {
$Type = [regex]::split($_,'<.*?>')
}
這段代碼工作正常,但是它填補$類型與每一個分裂,無疑,因爲它應該。我想實現的是每行的特定標記值放入數組中。
所以我嘗試了這一點,因爲我需要$ Htm變量中每行/對象的第6個標記。
$Htm = dir *.htm | foreach {Get-Content $_.FullName} | Select-String sell,buy,s/l,t/p,modify | Select-String -NotMatch MM,== | ForEach {
$Type = [regex]::split($_,'<.*?>')[6]
}
但是,它只從第一行開始給出第六個標記,而不是從所有行開始。這樣做的批量操作可以通過完全使用for循環來實現,我希望避免這種習慣,因爲坦率地說這是一個正確的婊子。
任何援助將不勝感激。
只是一個音符, PowerShell中的初學者往往會像在這裏一樣使用字符串,但實際上不需要將'$ _。FullName'傳遞給'Get-Content','$ _'就足夠了,因爲它是一個表示文件的對象。 'Get-Content'也可以直接從管道獲取文件名,所以'gci * .htm | gc'就足夠了。不需要'ForEach-Object'。 – Joey 2011-03-31 22:11:02
你可以舉一個例子,看看更清楚你有什麼和你真正需要什麼 – mjsr 2011-03-31 23:48:04