2

Пожалуйста, помогите мне создать скрипт для выполнения задачи, как описано ниже. У меня есть 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. Пожалуйста, помогите мне .. спасибо.

0