批处理脚本从 .txt 文件中获取每一行作为字符串(一行中有多个单词),然后在 chrome 中的单独选项卡中搜索每个字符串

批处理脚本从 .txt 文件中获取每一行作为字符串(一行中有多个单词),然后在 chrome 中的单独选项卡中搜索每个字符串

我有一个 controlfile.txt 文件,其中每一行都包含一些软件名称,例如第一行是“Microsoft Office”,第二行是“Autodesk AutoCAD”,第三行是“Adobe Acrobat Reader”,等等。我需要一个批处理脚本来从该 .txt 文件中获取每一行作为字符串(一行中有多个单词),然后在单独的选项卡中搜索每个字符串(软件名称)以查找其许可条款或 EULA。我有以下代码,但它没有将数组的值作为查询传递给 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 
)

答案1

为什么这么复杂?我认为没有必要将值存储在数组中 - 您可以直接在一个简单的 FOR /F 循环中启动每个 chrome 选项卡。

@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
)

基于数组的代码失败的原因是您忘记在 START 行中使用 CALL。

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

我更喜欢使用延迟扩展而不是 CALL 技巧,因为延迟扩展更快。

@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
)

假设您的行均不以 开头:,则可以执行第一个循环而无需 CALL 或 DelayedExpansion

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

相关内容