Por favor, ajude-me a criar um script para realizar tarefas conforme descrito abaixo. Eu tenho 2 arquivos. A.txt e B.txt Conteúdo de A.txt conforme abaixo
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
agora eu preciso procurar em A.txt pela palavra "FRUIT", e copiar a segunda linha em cima da "FRUIT" para um novo arquivo chamado
list.txt. MAS eu só preciso do nome da fruta, onde o arquivo.txt deve ser parecido com abaixo.
APPLE
ORANG
CHERY
Esta é a minha codificação (shel powel) para fazer isso ...
$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
}
Isto irá extrair a 2ª linha do topo conforme abaixo
name APPLE
name ORANG
name CHERY
E abaixo, o código (.bat) removerá a palavra "nome".
@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
)
Como segunda fase, agora eu preciso procurar por palavra no arquivo list.txt (APPLE, ORANG, CHERY .....) no meu B.txt .. B.txt será
parece como abaixo.
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
E agora, eu preciso pesquisar os mundos do list.txt em B.txt, e extrair a linha top 3 e escrevê-la de acordo com o novo arquivo
chamado done.txt ............ abaixo é minha codificação (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
}
Eu consegui desenvolver codificação para isso. mas eu preciso de 3 arquivos de script (2 powershel e 1 lote) para concluir esta operação. Gentilmente
me ajude a concluir esta tarefa em um único script. Será melhor se estiver em .vbs ou .bat. Por favor me ajude .. obrigada.
Tags batch-file vbscript parsing script