-2

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

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

有什么建议或帮助吗?我尝试了 findstr 和 if 条件,但我无法解决,正如我所说的我是新手,所以请帮助我

谢谢哈里

4

1 回答 1

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-4, call :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.

同样,我不确定这是否可以使用,因为我还没有测试过,如果有人想建议更改或告诉我如何随意修复它。如果它的概念是错误的(我相信它不是)告诉我,我会删除这个答案。

于 2013-07-17T04:27:05.753 回答