배치에서 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 변수의 각 줄/개체에서 여섯 번째 토큰이 필요하므로이 방법을 시도했습니다.
$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]
}
그러나 이것은 모든 행이 아니라 첫 번째 행에서 6 번째 토큰만을 제공합니다. 이것을 일괄 적으로 수행하는 것은 완전히 for 루프로 작동함으로써 달성 될 수 있습니다. for 루프를 솔직히하기 때문에 일을하는 습관을 벗어나고 싶었습니다.
도움을 주시면 감사하겠습니다.
딱 한 주 :
는 얼마 전에 나는 약 How PowerShell can help programmers 내가 아주 성공적으로 사용 :이 질문의 답의 개수가 표시됩니다
빠른 예를 기능
Convert-Html2Xml
을 보여 곳 썼다 PowerShell의 초보자는 여기 에서처럼 문자열로 모든 것을 처리하는 경향이 있지만 사실 Get-Content에'$ _. FullName '을 전달할 필요가 없으므로'$ _'는 파일을 나타내는 객체이므로 충분합니다. 또한'Get-Content'는 파일 이름을 파이프 라인에서 직접 취할 수 있으므로'gci * .htm | gc' 충분합니다. ForEach-Object가 필요 없습니다. – Joey예를 들어 htm을 넣어서 무엇을 갖고 있고 무엇이 정말로 필요한지 알아 보려면 – mjsr