Findstr не работает с SET /P?

У меня есть пакетный файл с частью, показанной ниже:

    rem @echo off
    cd C:\Program Files\CA\AllFusion Gen\GEN\test8.ief\c\
    FINDSTR /C:"'V1600 OPER'"  /C:"'V1714 OPER'" /C:"'V1801 OPER'" /C:"'V1901 OPER'" "MPOAD10C"

Приведенный выше пакетный файл успешно работает с приведенным выше кодом. Однако когда я изменил сценарий, чтобы пользователь мог вводить две переменные, как показано ниже (%path%=test8.ief,%file_name%=MPOAD10C), он выдает следующую ошибку:

«FINDSTR» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

    rem @echo off
    SET /P path=Enter name of IEF folder:
    echo. && echo.
    SET /P file_name=Enter name of file:
    echo. && echo.
    cd C:\Program Files\CA\AllFusion Gen\GEN\%path%\c
    FINDSTR /C:"'V1600 OPER'" /C:"'V1714 OPER'" /C:"'R18 V1801 OPER'" /C:"'V1901 OPER'" "%file_name%"

Я также ввел значение «C:\WINDOWS\system32» в переменной PATH в переменных среды.

Я очень новичок в пакетном скриптинге. Пожалуйста помоги. Заранее спасибо.

С уважением, Мохит Гупта.


person user3331568    schedule 20.02.2014    source источник


Ответы (2)


Не используйте path в качестве одной из ваших собственных переменных, эта конкретная переменная среды используется Windows для поиска исполняемых файлов, таких как findstr, как вы только что обнаружили.

Измените его на что-то вроде mypath, и ваша проблема должна исчезнуть.

person paxdiablo    schedule 20.02.2014

Чтобы исправить это, используйте имя, отличное от %PATH%, для захвата пользовательского ввода.

%PATH% — это специальная переменная, которая управляет где интерпретатор команд ищет исполняемые файлы. Когда вы изменяете %PATH% с помощью SET /P, вы меняете, где интерпретатор команд будет искать FINDSTR. Он не может найти FINDSTR.EXE в новом месте в %PATH%, поэтому возникает ошибка, что «FINDSTR не распознается как внутренняя или внешняя команда».

person chwarr    schedule 20.02.2014