Findstr用于批处理文件的用户输入

时间:2015-08-04 20:21:44

标签: batch-file user-input findstr

我想知道是否可以创建一个批处理文件,要求用户输入诸如“promocode”之类的输入,并搜索用户刚输入的“promocode”。如果它们相等,那么我想打开一个文件,如word文件,excel或sql。我希望能够这样做,因为对于每个不同的代码,需要为同事打开不同的文件。如果我有一个可以搜索的文件来查看promocode是否存在,那么我将不需要继续为新的promocode添加代码,他们只需将promocode添加到文本文件中。
如果无法完成此代码,请告知我们。

@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

我一直在尝试很多事情,这是一个例子。我不知道你是否能做到这一点,或者它是否是正确的顺序。

EDIT ReadThisFileTest.txt中的内容是promocodes: MCD758 MCD555 MCD957。不仅仅是这三个,但它们各自在文本文件中各自独立。每个都有3个字母后跟3个数字,如图所示。

2 个答案:

答案 0 :(得分:0)

(编辑以反映新信息)

如果promocodes与您要打开的文件名的前缀相同,则可以执行以下操作:

@ECHO OFF
SET /P promocode="Type a promocode please: "
FOR /F "usebackq tokens=*" %%G IN ( "\path\ReadThisFileTest.txt" ) DO (
    IF "%promocode%" == "%%G" (
        START CMD /C "path\%%G.docx"
        EXIT
    )
)
ECHO No matching code found.

答案 1 :(得分:0)

更灵活的方法是将promocode文件\path\ReadThisFileTest.txt扩展为包含两个(以空格分隔的)列,如下所示:

MCD758  \path\test.docx
MCD759  \path\to\another\file.xlsx

因此,文件名不再绑定到promocodes,您甚至可以提供不同的路径和/或文件扩展名。

批处理代码如下所示:

@echo off
set /P promocode="Type a promocode please: "
for /F "usebackq tokens=1,*" %%F in ("\path\ReadThisFileTest.txt") do (
    if "%promocode%"=="%%F" (
        start %%~G
        exit /B
    )
)
echo The promocode you entered is not valid.

如果您希望以不区分大小写的方式检查promocodes,则需要将if "%promocode%"=="%%F"替换为if /I "%promocode%"=="%%F"