【发布时间】:2015-08-04 20:21:44
【问题描述】:
我想知道是否可以创建一个批处理文件来要求用户输入诸如“促销代码”之类的输入并搜索用户刚刚输入的“促销代码”。如果它们相等,那么我想打开一个文件,例如 word 文件、excel 或 sql。我希望能够做到这一点,因为对于每个不同的代码,都需要为同事打开不同的文件。如果我有一个可以搜索以查看促销代码是否存在的文件,那么我不需要继续为新的促销代码添加代码,他们只需将促销代码添加到文本文件中即可。
如果无法完成此代码,请告诉我。
@echo off
SET /P promocode="Type a promocode please:"
for %%d in (\path\ReadThisFileTest.txt) do (
if findstr "MCD758" == %promocode% goto :MCD758
:MCD758
start \path\test.docx
我一直在尝试很多东西,这里有一个例子。我不知道你是否能做到这一点,或者它的顺序是否正确。
编辑 ReadThisFileTest.txt 中的内容是促销代码: MCD758 MCD555 MCD957。不止这三个,但它们在文本文件中各占一行。此外,每个都有 3 个字母后跟 3 个数字,如图所示。
【问题讨论】:
-
您不能在
if语句中使用findstr。无论如何,我真的不明白问题是什么。\path\ReadThisFileTest.txt是否包含“促销代码”列表?如何根据代码知道启动哪个文件/程序? -
编辑帖子,以
ReadThisFileTest.txt添加一行为例。 -
是的,带有路径的文件包含“促销代码”列表。现在它会打开那个测试文档,如果它工作的话。我可以让它使用嵌套的 if 并根据促销代码打开不同的文件,但正如我所说,我不希望每次需要添加另一个促销代码时都必须继续编辑代码。所以我正在寻找的是一种读取包含促销代码的文件的方法,如果它等于用户输入的内容,则打开基于用户输入的促销代码的文件。
-
在您的代码中,缺少
for正文的右括号。此外,您需要在其后声明exit /B,否则即使未找到匹配项,也会始终在:MCD758处继续执行。
标签: batch-file user-input findstr