2015-08-04 4 views
2

Мне было интересно, можно ли создать командный файл, который запрашивает пользователя для ввода, например «промокод», и ищет «промокод», который только что вводит пользователь. Если они равны, я хотел бы открыть файл, такой как файл слова, excel или sql. Я хочу иметь возможность сделать это, потому что для каждого другого кода нужно будет открыть другой файл для сотрудников. Если бы у меня был файл, который можно было бы найти, чтобы увидеть, есть ли промокод, тогда мне не нужно будет добавлять код для нового промокода, который они могут просто добавить промокод в текстовый файл.
Если этот код не может быть выполнен, пожалуйста, дайте мне знать.Findstr с пользовательским вводом для командного файла

@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 числа, как показано.

+0

Вы не можете использовать 'findstr' в инструкции' if'. Во всяком случае, я действительно не понимаю, в чем вопрос. Включает ли '\ path \ ReadThisFileTest.txt' список« промокодов »? Как узнать, какой файл/программа запускаться в зависимости от кода? – aschipfl

+0

Редактировать сообщение и добавить одну строку из 'ReadThisFileTest.txt' в качестве примера. – wOxxOm

+0

Да, этот файл с путём содержит список «промокодов». И сейчас он откроет этот тестовый документ, если он сработает. Я могу заставить его работать с вложенными и открытыми разными файлами на основе промокода, но, как я уже сказал, я бы предпочел не продолжать редактирование кода каждый раз, когда нужно добавить другой промокод. Итак, я ищу способ прочитать файл с промокодами в нем, и если он равен тому, что пользователь набрал, откройте файл на основе промокода, который пользователь набрал. – vince

ответ

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. 
+0

Итак, для этого метода он ищет файл для поиска того, что вводил пользователь, но тогда вам нужно, чтобы у него был путь к файлу, который им нужно открыть правильно? – vince

+0

@ vince: Да, у меня сложилось впечатление, что у вас есть несвязанное имя файла для каждого промокода. Если имя файла связано, то есть для 'MCD758', вам нужно открыть путь \ MCD758.docx', это становится еще проще. Это так? – zb226

+0

Я считаю, что это так.Для определенного промокода у него будет определенное имя файла, которое нужно будет открыть. Таким образом, MCD758 откроет say path \ MCD758.docx и MCD555 откроет путь \ MCD555.docx – vince

0

Более гибкий путь к расширить файл PromoCode \path\ReadThisFileTest.txt содержит два (разделенные пробелами) столбцы, например:

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

So имена файлов больше не привязаны к промокодам, и вы можете дать даже разные пути и/или расширения файлов.

Пакетный код будет выглядеть так:

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