ฉันมีไฟล์ข้อความ ASCII ชุดใหญ่ที่ฉันต้องแก้ไขด้วยเนื้อหาที่พบในไฟล์จากนั้นทำการต่อไฟล์ทั้งหมดให้เป็นไฟล์สรุปหนึ่งไฟล์ ฉันประสบความสำเร็จพอสมควรโดยใช้วิธีการทีละขั้นตอนจนถึงตอนนี้ แต่ฉันต้องการทำสิ่งนี้ในคราวเดียวและไม่สามารถเข้าใจได้ ฉันเขียนสคริปต์ใน PowerShell ซึ่งจะทำสิ่งที่ฉันต้องการสำหรับไฟล์เดียว แต่ฉันไม่สามารถหาวิธีแก้ไขมันสำหรับไฟล์ทั้งหมดในโฟลเดอร์ ฉันกำลังดิ้นรนกับการวนซ้ำและส่วนการต่อข้อมูลไฟล์สุดท้าย
นี่คือโครงสร้างไฟล์พื้นฐานของฉัน:
File1.txt
บรรทัดที่ 1 - abc123 - ส่วนหัว (ฉันต้องการตัดอักขระ 2,3 & amp; 4 จากที่นี่และเพิ่มลงในบรรทัดข้อมูล)
Line2 - data1
Line3 - data2
LineN - abc123 - ส่วนท้าย (ซ้ำกันของส่วนหัว)
File2.txt
บรรทัด 1 - efg456
Line2 - data3
Line3 - data4
LineN - efg456
FileN.txt
บรรทัด 1 - hij789
Line2 - data5
Line3 - data6
บรรทัด N - hij789
ฉันต้องการไฟล์ที่ส่งออกสุดท้ายที่จะมีโครงสร้างต่อไปนี้โดยมีการลบส่วนหัวและท้ายกระดาษและเนื้อหาที่แยกจากส่วนหัวในคอลัมน์ใหม่ที่จุดเริ่มต้นของไฟล์ (เหล่านี้เป็นไฟล์ความกว้างคงที่):
Final.txt
บรรทัด 1 - bc1data1
บรรทัด 2 - bc1data2
บรรทัดที่ 3 - fg4data3
บรรทัด 4 - fg4data4
Line5 - ij7data5
บรรทัด 6 - ij7data6
ฉันสามารถแก้ปัญหานี้สำหรับไฟล์เดียวและใส่รหัสด้านล่าง:
cd "C:\Data\Files\"
$S1 = Get-Content File1.txt -First 1
$S2 = $S1.Substring(2,3)
Get-Content File1.txt | ForEach-Object {Add-Content a.txt "$S2$_"}
Get-Content a.txt | Select -Skip 1 | Select -SkipLast 1 | Set-Content out.txt
# extract header line
# limit to characters of interest
# append to the beginning of each line in file
# append all files together w/o first & last line
เป็นการดีที่ฉันสามารถทำได้โดยไม่ต้องใช้ไฟล์ขยะ a.txt ด้วย แต่ฉันก็สามารถทำงานได้โดยการเขียนไปยังไฟล์แยกต่างหาก ข้อเสนอแนะ / เคล็ดลับใด ๆ ที่จะได้รับการชื่นชมในขณะที่ฉันค่อนข้างใหม่กับ PowerShell (ไม่กี่ชั่วโมงของการปฏิบัติ)