Пожалуйста, помогите мне создать скрипт для выполнения задачи, как описано ниже. У меня есть 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.txt слово "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
А ниже кодировка (.bat) уберет слово "имя".
@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
)
Что касается второго этапа, теперь мне нужно искать слово в файле 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.txt ............ ниже моя кодировка (powershel).
$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 powershel и 1 партия), чтобы завершить эту операцию. доброжелательно
помогите мне выполнить эту задачу в одном скрипте. Будет лучше, если он будет в .vbs или .bat. Пожалуйста, помогите мне .. спасибо.