โปรดช่วยฉันสร้างสคริปต์เพื่อทำงานตามที่อธิบายไว้ด้านล่าง ฉันมี 2 ไฟล์ A.txt และ B.txt เนื้อหาของ A.txt ตามด้านล่าง
ITEM
name TICKY
title nice coffe drink
type DRINK
ITEM
name APPLE
title sweet tasty apple
type FRUIT
ITEM
name JUICE
title nice tasty drink
type DRINK
ITEM
name ORANG
title niice nice orange
type FRUIT
ITEM
name CHERY
title nutritious rich fruit
type FRUIT
ตอนนี้ฉันต้องการค้นหาใน A.text สำหรับคำว่า "FRUIT" และคัดลอกบรรทัดที่ 2 ที่ด้านบนของ "FRUIT" ไปยังไฟล์ใหม่ที่ชื่อว่า
list.txt แต่ฉันต้องการเพียงชื่อของผลไม้โดย list.txt ควรมีลักษณะดังนี้
APPLE
ORANG
CHERY
นี่คือรหัสของฉัน (powel shel) เพื่อทำสิ่งนี้
$source = "C:\temp\A.txt"
$destination = "C:\temp\list.txt"
$hits = select-string -Path $source -SimpleMatch "type FRUIT" -CaseSensitive
$filecontents = get-content $source
foreach($hit in $hits)
{
$filecontents[$hit.linenumber-3]| out-file -append $destination
"" |out-file -append $destination
}
สิ่งนี้จะแยกบรรทัดที่ 2 ตามด้านล่าง
name APPLE
name ORANG
name CHERY
และด้านล่างการเข้ารหัส) จะลบคำว่า "ชื่อ"
@echo off
setlocal enabledelayedexpansion
del list2.txt
for /f "tokens=*" %%a in (C:\temp\list.txt) do (
set line=%%a
set chars=!line:~-13,13!
echo !chars! >> list2.txt
)
ในฐานะเฟสที่ 2 ตอนนี้ฉันต้องค้นหาคำในไฟล์ list.txt (APPLE, ORANG, CHERY ..... ) ใน B.txt ของฉัน .. B.txt จะเป็น
ดูตามด้านล่าง
ITEM
p_date 10/03/15
pt_time 11:29:40:00
title nice coffe drink
name TICKY
stock yes
end
ITEM
p_date 10/03/15
pt_time 11:29:40:00
title sweet tasty apple
name APPLE
stock yes
end
ITEM
p_date 10/03/15
pt_time 11:29:40:00
title nice tasty drink
name JUICE
stock yes
end
ITEM
p_date 10/03/15
pt_time 11:29:40:00
title niice nice orange
name ORANG
stock yes
end
ITEM
p_date 10/03/15
pt_time 11:29:40:00
title nutritious rich fruit
name CHERY
stock yes
end
และตอนนี้ฉันต้องค้นหาโลกจาก list.txt ใน B.txt และแยกบรรทัดบนสุด 3 บรรทัดและเขียนตามในไฟล์ใหม่
ชื่อ done.text ............ ด้านล่างเป็นรหัสของฉัน (powershell)
$source = "C:\temp\B.txt"
$destination = "C:\temp\done.txt"
$patterns = Get-Content c:\temp\list2.txt | Where-Object{$_}
$results = Select-String c:\temp\done.txt -Pattern $patterns -SimpleMatch
$results.Line | ForEach-Object{"$_`r`n"} | Set-Content c:\temp\done.txt
foreach($hit in $hits)
{
$filecontents[$hit.linenumber-4]| out-file -append $destination
$filecontents[$hit.linenumber-3]| out-file -append $destination
$filecontents[$hit.linenumber-2]| out-file -append $destination
$filecontents[$hit.linenumber-1]| out-file -append $destination
"" |out-file -append $destination
}
ฉันจัดการเพื่อเขียนโค้ดสำหรับสิ่งนี้ แต่ฉันต้องการไฟล์สคริปต์ 3 (2 powershell และ 1 แบทช์) เพื่อดำเนินการนี้ให้เสร็จ กรุณา
ช่วยฉันทำภารกิจนี้ให้สำเร็จด้วยสคริปต์เดียว มันจะดีที่สุดหากอยู่ใน. vs หรือ. bat โปรดช่วยฉัน.. ขอขอบคุณ