代码之家  ›  专栏  ›  技术社区  ›  vince

带有批处理文件用户输入的Findstr

  •  2
  • vince  · 技术社区  · 9 年前

    我想知道是否可以创建一个批处理文件,请求用户输入诸如“promocode”之类的信息,并搜索用户刚刚输入的“promocade”。如果它们相等,那么我想打开一个文件,比如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是促销代码: 麦克758 麦当劳555 MCD957。不止这三个,但它们在文本文件中各有一行。如图所示,每个字母后面都有3个字母和3个数字。

    2 回复  |  直到 9 年前
        1
  •  0
  •   zb226 Steven Lizarazo    9 年前

    (编辑以反映新信息)

    如果促销代码与要打开的文件名前缀相同,可以执行以下操作:

    @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.
    
        2
  •  0
  •   aschipfl    9 年前

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

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

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

    批处理代码如下所示:

    @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.
    

    如果您希望以不区分大小写的方式检查促销代码,则需要替换 if "%promocode%"=="%%F" 通过 if /I "%promocode%"=="%%F" .