我需要通过批处理脚本从文本文件中读取特定的单词。说我想要读取第2行第3行。
这是代码::
@ECHO OFF
cls
SET /P line=Please enter Line number:
ECHO Line number entered is : %line%
SET /P word=Please enter Word number:
ECHO Word number entered is : %word%
FOR /F "tokens=%word% skip=%line% delims=," %%G IN (E_dir.txt) DO echo Chosen word is: %%G
问题是,这给了我从第2行开始的所有第3个单词。(例如,用户输入是第1行,第3行)。行数存在问题,但我可以处理。我的问题是,当我只需要第2行和第3行的单个单词时,它会给我所有的单词。
输入文件:E_Dir.txt
January,Snowy,02
February,Rainy,15
March,Sunny,25
April,Test,20
输出:
Please enter Line number: 1
Line number entered is : 1
Please enter Word number: 3
Word number entered is : 3
Chosen word is: 15
Chosen word is: 25
Chosen word is: 20
预期产出:
Please enter Line number: 1
Line number entered is : 1
Please enter Word number: 3
Word number entered is : 3
Chosen word is: 15
答案 0 :(得分:3)
方式第一 ...
FOR /F "tokens=%word% skip=%line% delims=," %%G IN (E_dir.txt) DO echo Chosen word is: %%G&goto nextline
:nextline
方式第二 ...
set showme=Y
FOR /F "tokens=%word% skip=%line% delims=," %%G IN (E_dir.txt) DO if defined showme set showme=&echo Chosen word is: %%G
修订
SET /a showme=line-1
SET showme=skip=%showme%
IF %line% equ 1 set "showme= "
FOR /F "tokens=%word% %showme% delims=," %%G IN (E_dir.txt) DO if defined showme set showme=&echo Chosen word is: %%G
请注意,%line%
为1时,showme
会被故意设置为空格。这可确保showme
最初具有值。
我不知道你的迷路“2”来自哪里。这个程序对我有用。也许您可能想要使用十六进制编辑器检查源文件。它可能有一条没有LF的线。可能还会检查您的批次。如果您使用过NOTEPAD,请尝试编辑EDITPLUS或NOTEPAD ++。记事本做了一些奇怪的事情。