我正在尝试运行在线词典,以使用批处理脚本翻译文本文件“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
@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
打开“我”“知道”“不”和“抛光”页面 - 这可以节省创建/编辑文件的时间