1

我需要通过批处理脚本从文本文件中读取特定的单词。假设我想要读取第 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
4

1 回答 1

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

请注意,where %line%is 1,showme故意设置为 SPACE。这确保showme了初始值。

我不知道你的流浪“2”是从哪里来的。该程序对我有用。也许您可能想使用十六进制编辑器检查源文件。它可能有一行没有 LF。可能还检查您的批次。如果您使用过 NOTEPAD,请尝试使用 EDITPLUS 或 NOTEPAD++ 之类的编辑器。记事本做了一些奇怪的事情。

于 2013-09-16T14:44:08.197 回答