Windows批处理脚本 - 匹配文本文件中的数字

时间:2013-07-17 01:43:16

标签: batch-file

我是批处理脚本的新手,我想知道如何匹配数字(不是行号)说1,2,3到文本文件(a.txt)。

如果任何其他号码匹配,它应该提醒我,如果它与我正在寻找的号码相匹配那么它应该打印成功。

有任何建议或帮助吗?我试过findstr和条件,但我无法解决,因为我说新手,所以请帮助我

由于 哈

1 个答案:

答案 0 :(得分:0)

我不太明白这里要说的是什么,但我认为作者试图找出以下内容:

  • 你能检查一个名为a.txt的txt文件是否包含1,2,3(或用“,”分隔的任何其他数字系列),如果文件中没有其他数字则会报警用户而不是Echo文件名?

解决方案:

setlocal enabledelayedexpansion
setlocal enableextensions
set file=Ok
set target=a.txt

for /f "delims=, tokens=1-3" %%a in (%target%) do (
    call :Check %%a %%b %%c
)
:Check
if exist %1 (
if %1 neq 1 if %1 neq 2 if %1 neq 3 (set file=Alert
) else (shift /1)
goto :Check
) else (goto :report)
goto :eof

:report
if %file% equ Alert echo %target% does not match
if %file% equ Ok (
echo %target% is fine
Rem ! ! ! Add what you want to do to file here
)

好的,所以这只有在文件只有1行时才有效。它可能需要调整因为我不确定它是否会起作用(告诉我它是否不起作用)。差不多,它说的是tokens=1-3,那就是系列的长度。 call :Check %%a %%b %%c是要实现每一个,所以如果系列中有4个,则会tokens=1-4call :Check %%a %%b %%c %%d

最后,在:check程序中,if %1 neq 1 if %1 neq 2 if %1 neq 3包含您希望系列包含的数字,(请注意,它不会检查订单)。因此,如果您希望ed包含4,则为if %1 neq 1 if %1 neq 2 if %1 neq 3 if %1 neq 4

我再也不确定这是否可以使用,因为我没有测试过,如果有人想建议更改或告诉我如何解决它感觉自由。如果它的概念是错误的(我相信它不是)告诉我,我将删除这个答案。