Batch file 使用FOR/F在文本文件中搜索变量
我正在尝试在脚本的开头添加一个小检查。它包括让用户输入的变量%S%对照存储在文本文件中的列表进行检查。有人能提出为什么下面的代码不起作用,以及格式化文本文件的最佳方法吗 目前,你键入的任何内容都不会被破坏,无论它是否在列表中。 该列表当前的格式仅为逗号分隔的值,例如[600016000026000360004605]Batch file 使用FOR/F在文本文件中搜索变量,batch-file,for-loop,Batch File,For Loop,我正在尝试在脚本的开头添加一个小检查。它包括让用户输入的变量%S%对照存储在文本文件中的列表进行检查。有人能提出为什么下面的代码不起作用,以及格式化文本文件的最佳方法吗 目前,你键入的任何内容都不会被破坏,无论它是否在列表中。 该列表当前的格式仅为逗号分隔的值,例如[600016000026000360004605] @echo off SET STORES=c:\Stores.txt SET /P S=What is the code [60***]? FOR /F "tokens=1,2
@echo off
SET STORES=c:\Stores.txt
SET /P S=What is the code [60***]?
FOR /F "tokens=1,2 delims=," %%S IN (%STORES%) DO GOTO FIND
ECHO BROKE
:FIND
ECHO NOT BROKE
PAUSE
首先,我认为您应该避免使用%S%和%%S,因为这很混乱。 接下来,如果可以的话,我建议您更改Stores.txt的格式。每行写一个数字。这样,您还可以去掉
delims=
选项
60001
60002
60003
60004
60005
然后,引入IF
语句,根据文件内容检查用户输入。最后,我认为您需要文件中的GOTO-END
语句来完成预期的操作。以下是完整的文件:
@echo off
SET STORES=Stores.txt
SET /P USERINPUT=What is the code [60***]?
FOR /F "delims=," %%P IN (%STORES%) DO IF "%USERINPUT%"=="%%P" GOTO FIND
ECHO BROKE
GOTO END
:FIND
ECHO NOT BROKE
:END
PAUSE
您没有检查
%S%
的值。您的for循环总是转到:Find
。谢谢,但我对for命令的语法不是很熟悉。在看到下面托马斯的回答后,这是有道理的!非常感谢你,托马斯,现在说得通了。这将完美地工作!我注意到您建议使用单独的行,但分隔符中仍然有逗号。