Script em lote para buscar cada linha de um arquivo .txt como uma string (mais de uma palavra em uma linha) e pesquisar no Google cada string em uma guia separada no chrome

0

Eu tenho um arquivo controlfile.txt no qual tenho alguns nomes de softwares em cada linha, por exemplo "Microsoft Office" na primeira linha, depois "Autodesk AutoCAD" na segunda linha, "Adobe Acrobat Reader" na terceira linha e assim por diante. Eu preciso de um script em lote para buscar cada linha desse arquivo .txt como uma string (mais de uma palavra em uma linha) e pesquisar no Google cada string (Nome do Software) em uma guia separada para seus termos de licença ou EULA. Eu tenho este código a seguir, mas não está passando o valor da matriz como uma consulta para a pesquisa do google.

@echo off 
set "file=C:\New folder\controlfile.txt" 
set /A i=0 
for /F "usebackq delims=" %%a in ("%file%") do ( 
set /A i+=1 
call set array[%%i%%]=%%a 
call set n=%%i%% 
) 
for /L %%i in (1,1,%n%) do ( 
call echo %%array[%%i]%% 
start "" chrome.exe www.google.com#q=%%array[%%i]%%+EULA 
)
    
por IamAD 21.03.2018 / 05:25

1 resposta

1

Por que tão complicado? Não vejo necessidade de armazenar os valores em uma matriz - você pode simplesmente abrir cada guia do Chrome diretamente em um único loop FOR / F simples.

@echo off
for /f "usebackq delims=" %%A in ("C:\New folder\controlfile.txt") do (
  echo %%~A
  start "" chrome.exe www.google.com#q="%%~A"+EULA
)

O motivo pelo qual seu código baseado em matriz falhou é porque você esqueceu de usar CALL com sua linha START.

call start "" chrome.exe www.google.com#q=%%array[%%i]%%+EULA

Eu prefiro muito mais usar a expansão atrasada em vez do truque CALL, já que a expansão atrasada é muito mais rápida.

@echo off
setlocal enableDelayedExpansion
set "file=C:\New folder\controlfile.txt"
set /a i=0
for /F "usebackq delims=" %%A in ("%file%") do (
  set /a i+=1
  set "array[!i!]=%%A"
)
for /L %%A in (1,1,%i%) do (
  echo !array[%%A]!
  start "" chrome.exe www.google.com#q=!array[%%A]!+EULA
)

Supondo que nenhuma das suas linhas comece com : , você pode fazer o primeiro loop sem CALL ou DelayedExpansion

for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "%file%"') do set "array[%%A]=%%B"
    
por 21.03.2018 / 15:29