通过批处理脚本从文本文件中读取特定的Word(第2行,第3行)

时间:2013-09-16 14:10:01

标签: batch-file batch-processing

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

1 个答案:

答案 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 ++。记事本做了一些奇怪的事情。