用于 /f 标记和比较操作或文件中包含 26 个单词的实时 Web 词典的任何方法(批处理脚本)

问题描述 投票:0回答:1

我正在尝试运行在线词典,以使用批处理脚本翻译文本文件“polish_words.txt”中的单词。这应该会打开几个新选项卡,在本例中为 5 个,但它会打开 4 个和 1 个空选项卡。顺序是随机的 (1,3,4,2,5) 或 (Em,4,1,3,5),而不是 (1,2,3,4,5)。这也是一个问题,它不按顺序执行。我希望脚本正确并按照我的预期进行操作,即打开所有单词。

我目前合并了两个变量。我很好奇是否可以添加第三个变量以在末尾添加

&end"
。这个组合不起作用
%przegladarka%%%A%third%

主要问题是它应该正确打开带有波兰语单词的选项卡。所以如果我执行 10,它应该打开 10 个选项卡,而不是 6 个。

polish_words.txt

łódka dwa trzy cztery piec

english_dictionary_script.bat

@echo off
REM remember set "Encoding" to "ANSI" for "polish_words.txt"
@chcp 1250

SET przegladarka=start /d "C:\Program Files\Mozilla Firefox" firefox.exe "https://www.diki.pl/slownik-angielskiego?q=

FOR /f "tokens=1-26 usebackq delims= " %%A in ("polish_words.txt") DO (
IF [%%A] NEQ [] %przegladarka%%%A&end"
IF [%%B] NEQ [] %przegladarka%%%B&end"
IF [%%C] NEQ [] %przegladarka%%%C&end"
IF [%%D] NEQ [] %przegladarka%%%D&end"
IF [%%E] NEQ [] %przegladarka%%%E&end"
IF [%%F] NEQ [] %przegladarka%%%F"
IF [%%G] NEQ [] %przegladarka%%%G"
IF [%%H] NEQ [] %przegladarka%%%H"
IF [%%I] NEQ [] %przegladarka%%%I"
IF [%%J] NEQ [] %przegladarka%%%J"
IF [%%K] NEQ [] %przegladarka%%%K
IF [%%L] NEQ [] %przegladarka%%%L
IF [%%M] NEQ [] %przegladarka%%%M
IF [%%N] NEQ [] %przegladarka%%%N
IF [%%O] NEQ [] %przegladarka%%%O
IF [%%P] NEQ [] %przegladarka%%%P
IF [%%Q] NEQ [] %przegladarka%%%Q
IF [%%R] NEQ [] %przegladarka%%%R
IF [%%S] NEQ [] %przegladarka%%%S
IF [%%T] NEQ [] %przegladarka%%%T
IF [%%U] NEQ [] %przegladarka%%%U
IF [%%V] NEQ [] %przegladarka%%%V
IF [%%W] NEQ [] %przegladarka%%%W
IF [%%X] NEQ [] %przegladarka%%%X
IF [%%Y] NEQ [] %przegladarka%%%Y
IF [%%Z] NEQ [] %przegladarka%%%Z
)
pause
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
windows batch-file cmd command-line windows-terminal
1个回答
0
投票
@ECHO OFF
SETLOCAL

REM remember set "Encoding" to "ANSI" for "polish_words.txt"
@chcp 1250
FOR /f "usebackqdelims=" %%e IN ("polish_words.txt") DO FOR %%o ON (%%e) start "%%o" /d "C:\Program Files\Mozilla Firefox" firefox.exe "https://www.diki.pl/slownik-angielskiego?q=%%o&end"&timeout /t 1 >nul

GOTO :EOF

[未经测试]

批处理例程通常应该有

setlocal
,以便批处理结束时恢复原始环境,并且变量不会无休止地累积,这可能会导致同一
cmd
会话中后面的批处理出现问题。

第一个

for
从文件中抓取该行并将其整个 (
delims=
) 分配给
%%e
。第二个
for
迭代
%%e
中的值,依次将每个值分配给
%%o

start
命令中的第一个带引号的字符串将成为窗口标题,因此我习惯将其分配给某个标识字符串。如果您愿意,它可以是空字符串。

为什么

start /d...
而不是
start "title" "fullpathname to executable\executablename"...
idk - 两者都可能有效。

我添加了一个超时来尝试解决顺序问题,这可能是由于不同的 Firefox 实例经历不同的响应时间而引起的。可能需要增加

1
...idk

通过使用

FOR %%o ON (%*) start...
,您可以简单地使用

thisbatch I know no Polish

打开“我”“知道”“不”和“抛光”页面 - 这可以节省创建/编辑文件的时间

© www.soinside.com 2019 - 2024. All rights reserved.